2685808842 发表于 2025-5-1 23:06:24

佬们!佬们!关于AI8051U的USARTCR1配置为SPI,进行双机互为主从通信

1、AI8051U的SPI1,也就是串口1的USARTCR1寄存器配置为SPI1,这个SPI1通信时还需要配置SPI的寄存器吗?
我试过再配置SPI的MSTR会出现卡死情况,就放弃这个情况了。
应该先问一下可以进行主从机的通信吗?照说可以,可以按照这样进行主从机切换吗?

这个寄存器初始化后,是直接通过SS引脚下拉启动发送吗?

2、我配置两个单片机的USARTCR1寄存器为SPI1的主机模式,然后用SPI的一边接一边发,
确实也发送了,也接收了,但是数据不对,从机用的下降沿触发,之前用检测低电平,但是数据都一样,
是因为时序的问题吧!但是全部接收的都为一个值,可能和全部配置为主机的问题。
但是我之前也配置过一个主机一个从机,接收的数据也全一样,可能因为时序吧,但是就很离谱。

3、我也研究了一下给的手册,按照中断方式相互传输数据,
但是如果不用中断,只是简单的传输时,数据不准是时序的问题吗?
但是处理之后总是一样的。
{:yun:}{:yun:}
4、虽然我板子之间的连接用的杜邦线,之前查过杜邦线会有影响,SPI的时钟频率也只配的四分频,时序问题也可能会被影响吧!
5、也看了一下AI8051U创新风格库函数,但是里面还没有从机;传统风格库全用的SPI0,感觉有点点蒙蒙的。

佬们!佬们!各位大哥!能否给点建议!
{:4_184:}真的要放弃SPI,用串口去了{:4_184:}
谢谢各位佬们!








国芯人工智能 发表于 2025-5-1 23:08:00

关于AI8051U的USARTCR1配置为SPI模式实现双机通信的技术分析及解决方案:

1. USARTCR1与SPI寄存器协同配置问题
当使用USARTCR1将串口1配置为SPI1模式时,需注意以下配置步骤:
应先配置USARTCR1的SPI使能位(SPE)和主从模式位(MSTR)
随后配置SPICR1寄存器的DFF、LSBFIRST、SSM等参数
特别注意SSI(内部从机选择)位的状态:主模式下SSI应置1,从模式下需根据SS引脚状态自动切换
典型卡死问题往往源于:
a) 主从设备SS引脚未正确连接(建议SS引脚需直连)
b) 主从模式切换时未先关闭SPI使能(SPE位应先清零再修改MSTR)
c) 时钟极性(CPOL)与相位(CPHA)配置不一致

2. 主从模式动态切换实现方案
建议采用硬件NSS管理模式:
```C
// 主机配置
USARTCR1 |= (1

[本文内容由国芯人工智能辅助生成,仅供参考]

神农鼎 发表于 2025-5-2 14:36:46







深圳国芯人工智能有限公司-实验箱

DebugLab 发表于 2025-5-2 14:54:00


注意MSTR位的状态
数据异常检查CPOL和CPHA
从机输入时钟频率不要大于SPI时钟频率的一半

王昱顺 发表于 2025-5-2 21:21:59

例程有如何使用USART的SPI进行主从相互通讯的例子。
独立的SPI和USART1-SPI、USART2-SPI这三个SPI,是相互独立的,
配置USART1-SPI时,不需要动独立的SPI部分的寄存器,
所有的操作寄存器都可以在USART1相关的寄存器内找到
页: [1]
查看完整版本: 佬们!佬们!关于AI8051U的USARTCR1配置为SPI,进行双机互为主从通信