7u_ 发表于 2023-10-24 16:29:34

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以下,数据接收没有问题。请各位大佬解答一下,学习学习,谢谢!


神农鼎 发表于 2023-10-24 18:10:30

SPI 的时钟 《 1/4 STC8H1K08的时钟
还有 SPI的口外部加10K 上拉到 低电压的那一方,I/O设置成开漏

串的电阻没必要,上电都是高阻了,后续又是设置成开漏







7u_ 发表于 2023-10-24 19:03:00

神农鼎 发表于 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隔离的,电压都对的上。

神农鼎 发表于 2023-10-24 20:32:48

将现在真的实际电路的原理图的PDF发上来,大家好帮忙分析

7u_ 发表于 2023-10-25 08:44:58

STM32直连74HC245出来,连到STC8H1K08的SPI,做单主单从数据传输,传输40个字节数据,用中断方式,单个字节传输没有频率限制;传输两个字节以上,出现只有最后一个字节正常,除非主机频率在700KHz。

7u_ 发表于 2023-10-25 08:51:55

程序使用例程的库函数,检查寄存器应该是没问题的,IO设置原为双向口,现在改成开漏,用中断传输。

神农鼎 发表于 2023-10-25 10:52:06

/*
STM32直连74HC245出来,连到STC8H1K08的SPI,
做单主单从数据传输,传输40个字节数据,
用中断方式,单个字节传输没有频率限制;
传输两个字节以上,出现只有最后一个字节正常,
除非主机频率在700KHz。
*/
===建议你先改成 STC8H和第三方MCU直接连接



7u_ 发表于 2023-10-25 14:13:21

问题可能找到了,但是有个疑问想咨询一下。

问题可能在SS引脚上,我的STM32控制SS脚是通过IO控制的,DMA方式发送数据,所以40个字节数据时,SS一直为低,导致接收的顺序有错。可能是这个原因

疑问,我看手册上有SSIG控制位,配合MSTR控制位,可以实现单主单从的方式,我自己试没有成功,想要问一下,这种情况下,怎么配置SPI从机,可以把STC一直当从机使用,不关注SS脚。

神农鼎 发表于 2023-10-25 14:18:48


7u_ 发表于 2023-10-25 14:20:00

我做以下测试:
①使用双STC的单主单从spi传输数据,发送6MHz---接收6MHz是能够传输数据的,使用中断发送接收,正常;
②使用双STC的单主单从spi传输数据,发送3MHz---接收6MHz是能够传输数据的,使用中断发送接收,正常;

查看波形,和STM32传输的数据波形差别,可能就是在SS脚上的区别,还有频率,STM32的频率也在6M以下,但是传输不成功。
页: [1] 2
查看完整版本: STC8H1K08做SPI从机,时钟频率问题