你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用STM32CubeMX 工程中,SPI操作MAX7219 遇到问题了

[复制链接]
select326 提问时间:2017-8-22 14:07 /
阅读主题, 点击返回1楼
收藏 1 评论13 发布时间:2017-8-22 14:07
13个回答
lqh-414236 回答时间:2017-8-25 09:24:32
直接代码吧!这个是我写norflash的spi配置

1

1

2

2

3

3

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

无薪税绵 回答时间:2017-8-25 13:16:52
//这是使用IO模拟的。
//max7219驱动部分程序如下:
#include "max7219.h"

//只用的到0-9这几个数码下面的代码时根据自己的硬件定制的数码,别的不见得适合使用
//如何才能够使用MAX7219自带的译码工具,
uint8_t table2[10]={0xdb,0x09,0xb3,0x3b,0x69,0x7a,0xfa,0x0b,0xfb,0x7b};

//max7219与stm32硬件连接为GPIOA4[SPINSS],GPIOA5[SPISCK],GPIOA7[SPIMOSI]
void Config_Max7219(void)
{

RCC->APB2ENR|=1<<2;    //IO口A时钟使能,因为用来和max7219相互连接的几根信号线全部在A口上
             
GPIOA->CRL&=0X0F00FFFF; //用到了第7位,第5位,第4位,将这四个引脚设置为推挽输出模式,功能保留
GPIOA->CRL|=0X30330000;//11,设置的上述几个引脚的的输出模式为最大输出速度50MHz

        GPIOA->ODR|=1<<4;      //PA4 输出高        LOAD
        GPIOA->ODR|=1<<5;      //PA5 输出高        CLK
        GPIOA->ODR|=1<<7;      //PA7 输出高        DIN
}


//控制命令和数据同时发送到max7219芯片
void Write_Max7219(uint8_t address,uint8_t data)
{
uint8_t i;
LOAD=0;//拉低片选线,选中器件
Delayxms(3);
//一共有十六位,先发送地址,再发送数据,其实可以直接发送16位,但是感觉那样不是很友好
for(i=0;i<8;i++)
{
Delayxms(3);
CLK=0;        //拉低时钟信号线
DIN=((address>>7)&0x01);//每次取字节的最高位,屏蔽掉了低7位
Delayxms(5);//考虑到光耦的转换速率
address<<=1;//次高位移到最高位
CLK=1;        //        时钟上升沿,发送地址
}
//发送数据
for(i=0;i<8;i++)
{
Delayxms(3);
CLK=0;
DIN=((data>>7)&0x01);
Delayxms(5);//考虑到光耦的转换速率
data<<=1;
CLK=1;
}
Delayxms(3);
LOAD=1;        //地址和数据的16位都发送完毕,拉高片选信号,将16位数据锁存到MAX7219的寄存器中
Delayxms(3);
}


//max7219使用前的初始化操作,写入相应的控制命令
void Init_Max7219(void)
{
Write_Max7219(SHUT_DOWN,0x01);        //01开启正常工作模式,00开启关断模式
Write_Max7219(DISPLAY_TEST,0x00);        //选择测试模式
Write_Max7219(DECODE_MODE,0x00);        //因为硬件连接上面的原因,没有办法使用全译码方式,只能自己编码
Write_Max7219(SCAN_LIMIT,0x03);        //2支LED全用
Write_Max7219(INTENSITY,0x0a);        //设置初始亮度
}

void Display(uint8_t shi,uint8_t ge)
{
Write_Max7219(1,table2[ge]);
Write_Max7219(2,table2[shi]);
}


//如果想用库的,请参考:
http://blog.csdn.net/scliu12345/article/details/50277527

评分

参与人数 1ST金币 +5 收起 理由
zero99 + 5

查看全部评分

五哥1 回答时间:2017-8-27 10:36:17
无薪税绵 发表于 2017-8-25 13:16
//这是使用IO模拟的。
//max7219驱动部分程序如下:
#include "max7219.h"

谢谢大神解答
无薪税绵 回答时间:2017-8-27 19:18:32

和坛友相互学习。
12

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版