完善资料让更多小伙伴认识你,还能领取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改成下面的条件语句就不能显示了。 这是啥原因啊,还请个位大侠指点一二,小的不胜感谢 |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第四十六章 SD卡模拟U盘实验
505 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-移植前准备之git管理内核源码
1972 浏览 0 评论
【瑞萨RA2L1入门学习】+ MacOS安装e2studio
887 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-本地仓库管理之分支间的操作
852 浏览 0 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】3D 图形显示
711 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12280 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-9 08:44 , Processed in 0.412590 second(s), Total 34, Slave 28 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号