STC8H1K08做SPI从机,时钟频率问题
有一个技术问题想要咨询一下:①我用STC8H1K08,IRC时钟主频在35MHz,系统时钟也在35MHz,用作SPI的从机接收,SPI时钟设置为4分频,也就是35M/4=8.75MHz的SPI频率。
②我用STM32芯片为SPI主机发送数据,SPI时钟主频在90MHz。
现象:
使用中断,
单个数据接收正常;
多个数据接收时,只有最后一个数据正常,除非把SPI主机频率降到128分频,也就是90M/128 = 700KHz左右。
问题是:
为什么多个数据不正常呢,按道理SPI接收数据,时钟频率不大于最大时钟即可。
即:SPI从机设置为8.75MHz,那么主机频率只要在8M以下,数据接收没有问题。请各位大佬解答一下,学习学习,谢谢!
SPI 的时钟 《 1/4 STC8H1K08的时钟
还有 SPI的口外部加10K 上拉到 低电压的那一方,I/O设置成开漏
串的电阻没必要,上电都是高阻了,后续又是设置成开漏
神农鼎 发表于 2023-10-24 18:10
SPI 的时钟 《 1/4 STC8H1K08的时钟
还有 SPI的口外部加10K 上拉到 低电压的那一方,I/O设置成开漏
版主,我测试了您说的方法,原配置IO为双向上拉口,改成开漏OD,在SPI的各个引脚加上拉,也还是不行,主机频率一上升数据就不对了。
目前700KHz左右传输是全部数据正常的,高于700KHz,也就是1.4M,只有最后一个数据是正常的。
版主知道是什么原因吗?
硬件配置:CPOL、CPLA都对上的了,SPI的引脚和配置都正常。STM32和STC芯片之间是有74HC245隔离的,电压都对的上。 将现在真的实际电路的原理图的PDF发上来,大家好帮忙分析 STM32直连74HC245出来,连到STC8H1K08的SPI,做单主单从数据传输,传输40个字节数据,用中断方式,单个字节传输没有频率限制;传输两个字节以上,出现只有最后一个字节正常,除非主机频率在700KHz。
程序使用例程的库函数,检查寄存器应该是没问题的,IO设置原为双向口,现在改成开漏,用中断传输。
/*
STM32直连74HC245出来,连到STC8H1K08的SPI,
做单主单从数据传输,传输40个字节数据,
用中断方式,单个字节传输没有频率限制;
传输两个字节以上,出现只有最后一个字节正常,
除非主机频率在700KHz。
*/
===建议你先改成 STC8H和第三方MCU直接连接
问题可能找到了,但是有个疑问想咨询一下。
问题可能在SS引脚上,我的STM32控制SS脚是通过IO控制的,DMA方式发送数据,所以40个字节数据时,SS一直为低,导致接收的顺序有错。可能是这个原因
疑问,我看手册上有SSIG控制位,配合MSTR控制位,可以实现单主单从的方式,我自己试没有成功,想要问一下,这种情况下,怎么配置SPI从机,可以把STC一直当从机使用,不关注SS脚。
我做以下测试:
①使用双STC的单主单从spi传输数据,发送6MHz---接收6MHz是能够传输数据的,使用中断发送接收,正常;
②使用双STC的单主单从spi传输数据,发送3MHz---接收6MHz是能够传输数据的,使用中断发送接收,正常;
查看波形,和STM32传输的数据波形差别,可能就是在SS脚上的区别,还有频率,STM32的频率也在6M以下,但是传输不成功。
页:
[1]
2