-
艾伦183 回答了该问题
GD32F303RCT6 SPI通信问题
官方提供的移植资料,可以借鉴一下。2.7.1CLK线重复配置有客户反馈当SPI处于主模式下,重复配置SPI的CLK线会引起内部计数器紊乱:问题代码:GPIO->CRL&=0x000fffff;GPIO->CRL|=0xBBB00000;上面这段代码是执行SPI口的IO初始化,调用两次后会使CLK上面产生一个脉冲。引起内部计数器出错,ST的在SPI再次初始化的时候会将内部计数器清零,GD不会将内部计数器清零。修改办法:vu32temp;temp=GPIOA->CFL;temp&=0x000fffff;temp|=0xbbb00000;GPIOA->CRL=temp;先进行运算再去进行赋值,内部的SPI计数器就不会因为CLK数据的变化引起误操作。2.7.2SPI通信BSY标志位在SPI程序编写的过程中,轮询使用BSY作为检测标志位,传送数据丢失或者是错误。这是因为GD的BSY标志位不是在写入DR后就置位的,而是有很小的一个延时后才置起的。传输过程中不要使用BSY作为每次传输的判断,使用TXE和RXNE来进行判断。2.7.3SPI控制寄存器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的配置。
4327浏览 8回复 23关注 -
tyw 回答了该问题
-
chunyang 回答了该问题
-
tyw 回答了该问题
最近在研究**hex文件
那是94年从实用电子所辞职下海,去台资游戏机公司打工时做的YM3812声霸卡音源芯片驱动板.那年头存储芯片很金贵,游戏音乐声效用WAV档很费ROM,改用MIDI档一分钟音乐才几k.差几百倍.于是乎耗时3个月,解读MIDI档,用51单片机一字节一字节把MIDI档抠出来,回放成音乐,有127种音色.哈哈,自制声卡.用cakewalk软件,还人工合成了声效MIDI档.老板见了咪咪笑.
4556浏览 11回复 25关注 -
biechedan 回答了该问题
-
七毛钱 回答了该问题
-
allbut 回答了该问题
-
XZL 回答了该问题
-
g0d5xs 回答了该问题
-
天意无罪 回答了该问题
-
jinyuhang123456 回答了该问题
-
艾伦183 回答了该问题
定时器的初值算出来是个小数怎么办?
有小数很正常,就好比串口的波特率有时候也会出现小数,但是能够正常运行(正常发送接收数据),这就说明在误差范围内就可以满足要求,不影响使用。所以根据自己的需求来定,实在不行就根据定时器的分频和周期反推来配置一个接近你所需要频率的值。
2115浏览 10回复 22关注 -
芯易芯科技 回答了该问题
-
天意无罪 回答了该问题
-
Kikig 回答了该问题
没有更多了

问答