找回密码
 立即注册
楼主: 7***

STC8H1K08做SPI从机,时钟频率问题

[复制链接]

该用户从未签到

552

主题

9496

回帖

1万

积分

管理员

积分
14067
发表于 2023-10-25 14:23:23 | 显示全部楼层
截图202310251420306834.jpg
SSIG = 1, 忽略 SPI的选择管脚 /SS


截图202310251422133373.jpg
SSIG = 1, 忽略 SPI的选择管脚 /SS
MSTR =0, 从机;SSIG = 1, 忽略 SPI的选择管脚 /SS

回复 支持 反对 送花

使用道具 举报

该用户从未签到

46

主题

3042

回帖

6857

积分

超级版主

积分
6857
发表于 2023-10-25 14:53:59 | 显示全部楼层
本帖最后由 梁工 于 2023-10-25 15:00 编辑

STC8H1K08没有DMA,所以做从机时只能用中断接收,主机需要给足够的时间让从机取走数据。如果换STC8H8K64U有DMA的,就能解决。
具体来说,主机每发送一个字节,都要间隔一定时间,让从机可以取走数据,从机响应中断至少需要40个时钟(具体跟中断函数处理时间相关,再加上进出中断的时间大约40T),然后主机再发送下一个数据。
STM32的SPI主频90MHz(SHIPI时钟还是MCU主频?),远远高于STC SPI的时钟,所以必须降低频率,SPI时钟要对应匹配。

楼主所言:单个数据接收正常,多个数据接收时,只有最后一个数据正常,除非把SPI主机频率降到128分频,也就是90M/128 = 700KHz左右。
这直接证明了我上面的描述,主机发送速度太快,多字节时从机根本来不及取走数据,减慢速度就可以了。
回复 支持 反对 送花

使用道具 举报

该用户从未签到

1

主题

10

回帖

55

积分

注册会员

积分
55
 楼主| 发表于 2023-10-25 14:54:14 | 显示全部楼层
按照手册上配置了,接收的数据为0x00,单个接收也是0x00,请问是否有什么要注意的,我继续去测一下双STC的这个模式。
1.png
2.png
3.png
回复 支持 反对 送花

使用道具 举报

该用户从未签到

46

主题

3042

回帖

6857

积分

超级版主

积分
6857
发表于 2023-10-25 14:55:47 | 显示全部楼层
本帖最后由 梁工 于 2023-10-25 14:58 编辑
7u_ 发表于 2023-10-25 14:13
问题可能找到了,但是有个疑问想咨询一下。

问题可能在SS引脚上,我的STM32控制SS脚是通过IO控制的,DMA方 ...

你的问题应该不是SS脚的问题,应该是主机速度过快,没给从机时间处理。但SPI最好标准用法,用上SS脚。STC8H1K08没有DMA,如果换STC8H8K64U有DMA的,就能解决。
回复 支持 反对 送花

使用道具 举报

该用户从未签到

1

主题

10

回帖

55

积分

注册会员

积分
55
 楼主| 发表于 2023-10-25 15:00:51 | 显示全部楼层
梁工 发表于 2023-10-25 14:55
你的问题应该不是SS脚的问题,应该是主机速度过快,没给从机时间处理。但SPI最好标准用法,用上SS脚。 ...

我的从机频率设置在35MHz/4=8.75MHz,按道理主机的频率只要低于这个值,单主单从方式,就可以传输成功了吧是不是,但是目前只能700KHz,差距这么大,有些奇怪。

测试双STC的忽略SS脚传输,也不可以,接收的数据为0x00。
回复 支持 反对 送花

使用道具 举报

该用户从未签到

1

主题

10

回帖

55

积分

注册会员

积分
55
 楼主| 发表于 2023-10-25 16:10:50 | 显示全部楼层
验证不是SS的问题,测试:双STC芯片传输的SS脚不做SS改变,发完5个数据后再改变电平,这时候也是正常的。

另做测试,STM32修改频率接近3Mhz。也就是2.8M左右,对了最后两个数据,后续继续测试中...
回复 支持 反对 送花

使用道具 举报

该用户从未签到

1

主题

10

回帖

55

积分

注册会员

积分
55
 楼主| 发表于 2023-11-17 09:44:23 | 显示全部楼层
最终来结帖了

原因:经波形测试验证,是因为STC的SPI接收过程中,单个字节接收完成后需要有一定的等待时间。

解决办法:使用STC8H1K08T,带DMA_SPI的,但还是需要等待时间,这个时间在SPI设置17.5MHz频率下,
需要400ns的空窗期,故在STM32上程序做处理,使用定时器DMA触发SPI发送字节,
采用循环模式,间隔500ns继续发第二个字节,目前测试接收正常。
回复 支持 反对 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2024-5-18 20:15 , Processed in 0.065116 second(s), 54 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表