汇集网友智慧,解决技术难题
单片机 国产芯片 嵌入式 技术交流 spi通信 GD32F303RCT6
赞0
评论
2022-05-30
2022-05-24
xiaofei2022 发表于 2022-5-23 19:29 已解决
2022-05-23
点击图片添加到编辑器内容中
点击文件名将附件添加到文章中
提交
tyw
314个答案
天意无罪
284个答案
xch
199个答案
jjjyufan
197个答案
coody
179个答案
chunyang
135个答案
LcwSwust
134个答案
呐咯密密
105个答案
赞0
有客户反馈当SPI处于主模式下,重复配置SPI的CLK线会引起内部计数器紊乱:
问题代码: GPIO->CRL&=0x000fffff;
GPIO->CRL|=0xBBB00000;
上面这段代码是执行SPI口的IO初始化,调用两次后会使CLK上面产生一个脉冲。引起内部计数器出错,ST的
在SPI再次初始化的时候会将内部计数器清零,GD不会将内部计数器清零。
修改办法: vu32 temp;
temp=GPIOA->CFL;
temp&=0x000fffff;
temp|=0xbbb00000;
GPIOA->CRL=temp;
先进行运算再去进行赋值,内部的SPI 计数器就不会因为CLK数据的变化引起误操作。
2.7.2 SPI 通信BSY标志位
在SPI程序编写的过程中,轮询使用BSY作为检测标志位,传送数据丢失或者是错误。这是因为GD的BSY
标志位不是在写入DR后就置位的,而是有很小的一个延时后才置起的。传输过程中不要使用BSY作为每次传
输的判断,使用TXE和 RXNE来进行判断。
2.7.3 SPI 控制寄存器1(SPI_CR1)配置流程
客户如果从低到高一位一位配置该寄存器会出现MODF的错误,经过排查是由于GD的MCU在SPE使能之
前就开始检测是否有模式错误,而ST是在SPE使能之后,所以在MSTR写1之前要保证模式正确。SSM为0时
保证外接高电平或者SSM和SSI都写1或者是把SSOE打开。130\150没有该问题.
案例:BIDIMODE=0; RXONLY=0;MSTR=1;DFF=0;CPOL=0;CPHA=0;SSM=1;
SSOE=1;TXEIE=1;BR=2;LSBFIRST=0;CRCPOLY=7;SPE=1;
这个顺序在ST上正常,在GD上出现MODF错误,解决的话可以将整个寄存器一次写入,也可调整初始化顺
序,同时加上SSI的配置。
评论
2022-05-30
赞0
评论
2022-05-24
赞0
评论
2022-05-24
赞0
评论
2022-05-24
赞0
分享下 解决方法,大家一起成长学习
评论
2022-05-23
赞0
什么原因?
评论
2022-05-23
赞0
评论
2022-05-23
赞0
评论
2022-05-23
波形上哪个异常啊
您需要登录后才可以回复 登录 | 注册