完善资料让更多小伙伴认识你,还能领取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》第二章 常用的C语言知识点
377 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
536 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
540 浏览 0 评论
950 浏览 0 评论
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
1403 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11760 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 05:05 , Processed in 0.592050 second(s), Total 69, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号