完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
打算用STC12C5A60S2的SPI驱动2个支持spi通讯的MAX7221,虽然根据手册2片可以通过连极来达到向两片写入数据,因为电路板2块芯片离开的位置比较远就打算通过其他两个端口模拟SS片选信号,结果在驱动部分如果写了其他的判断类的就死活不能正常显示,只有强制对某个片选控制才能正常显示,也就是说只能控制一片芯片。用时序测试器测试端口的时序进行比较,没发现有太大的差别,但是就是不显示。下面我把程序附上(初始化部分我就不贴出来了,只是贴出向MAX7221写显示数据的部分)
/************************************************************************ * 函数功能 :SPI写入一个字节 * * 函数名称 :SPI_Write(uchar addr.uchar dat) * * 输入 :写入地址,写入数据 * * 输出 :无 * *************************************************************************/ //*======================只针对具有内置SPI类芯片========================== void SPI_Write(uchar addr,uchar dat) { SPI_SS = 0; //拉低SS端口 // if(MAX7221_Select==0){ // SPI_SS=0; // } /* switch (MAX7221_Select){ case 0: SPI_SS =0; //选择板载MAX7221 break; case 1: SPI_CS1 =0; //选择MAX7221_No1 break; case 2: SPI_CS2 =0; //选择MAX7221_No2 break; default: break; }*/ SPSTAT = 0xC0; //清零SPI中断标志 SPDAT = addr; //地址写入SPI发送缓冲器 while(!(SPSTAT & 0x80)); //查询数据是否发送完毕 SPSTAT = 0xC0; //清除SPI中断标志 SPDAT = dat; //数据写入SPI发送缓冲器 while(!(SPSTAT & 0x80)); //判断数据是否发送完毕 SPI_SS = 1; //拉高SS端口 // SPI_CS1 =1; // SPI_CS2 =1; } 红色字体部分是可以正常显示,如果将SPI_SS改成下面的条件语句就不能显示了。 这是啥原因啊,还请个位大侠指点一二,小的不胜感谢 |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-TF卡烧录流程之烧写过程
1187 浏览 0 评论
2086 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程之烧写原理
1552 浏览 0 评论
请问SPH0641LU4H这款麦克风如何在不使用I2S的情况下,单纯通过GPIO来进行驱动且正常读取数据呢
1161 浏览 1 评论
698 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12109 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-5 11:15 , Processed in 1.075815 second(s), Total 35, Slave 29 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号