返回列表 发新帖我要提问本帖赏金: 20.00元(功能说明)

[AT32F403/403A] 使用普通GPIO实现模拟SPI功能

[复制链接]
7632|69
mikewalpole 发表于 2025-4-5 22:13 | 显示全部楼层
在传输数据之前,确保片选信号(CS)处于使能状态。
在传输完成后,释放片选信号。
ccook11 发表于 2025-4-6 08:00 | 显示全部楼层
减少信号线长度,避免与高频信号并行。
 楼主| dffzh 发表于 2025-4-6 16:00 | 显示全部楼层
ccook11 发表于 2025-4-6 08:00
减少信号线长度,避免与高频信号并行。

学习了
 楼主| dffzh 发表于 2025-4-6 16:01 | 显示全部楼层
mikewalpole 发表于 2025-4-5 22:13
在传输数据之前,确保片选信号(CS)处于使能状态。
在传输完成后,释放片选信号。 ...

是的,片选信号低电平active
bartonalfred 发表于 2025-4-8 09:30 | 显示全部楼层
使用GPIO模拟SPI功能可能会受到CPU速度和软件延时精度的限制,导致传输速率较低。
 楼主| dffzh 发表于 2025-4-8 11:04 | 显示全部楼层
bartonalfred 发表于 2025-4-8 09:30
使用GPIO模拟SPI功能可能会受到CPU速度和软件延时精度的限制,导致传输速率较低。 ...

确实如此, GPIO的电平翻转速度也会影响,一般1MHZ速率以内的应用基本没问题
pixhw 发表于 2025-4-8 12:35 | 显示全部楼层
如果某个GPIO被错误配置为输入或输出,可能会导致通信失败。
 楼主| dffzh 发表于 2025-4-8 13:10 | 显示全部楼层
pixhw 发表于 2025-4-8 12:35
如果某个GPIO被错误配置为输入或输出,可能会导致通信失败。

引脚驱动程序肯定得配置正确才行哦
usysm 发表于 2025-4-8 15:38 | 显示全部楼层
如果目标设备对时序有严格要求,建议使用硬件定时器来生成时钟信号,而不是依赖简单的延时函数。
 楼主| dffzh 发表于 2025-4-8 16:03 | 显示全部楼层
usysm 发表于 2025-4-8 15:38
如果目标设备对时序有严格要求,建议使用硬件定时器来生成时钟信号,而不是依赖简单的延时函数。 ...

有道理,可以根据SPI从设备对时序的精度要求通过硬件定时器触发CLK信号
benjaminka 发表于 2025-4-9 19:13 | 显示全部楼层
如果系统中有其他高优先级任务(如中断服务程序),可能会影响GPIO模拟SPI的时序稳定性。
saservice 发表于 2025-4-9 22:15 | 显示全部楼层
如果不需要高速通信,适当降低时钟频率可以提高软件模拟的可靠性。
sdCAD 发表于 2025-4-10 01:16 | 显示全部楼层
在SPI传输期间,尽量减少中断处理,以免影响时序。
 楼主| dffzh 发表于 2025-4-10 08:46 | 显示全部楼层
benjaminka 发表于 2025-4-9 19:13
如果系统中有其他高优先级任务(如中断服务程序),可能会影响GPIO模拟SPI的时序稳定性。 ...

应用于工业自动化EtherCAT总线产品,目前运行还比较稳定
 楼主| dffzh 发表于 2025-4-10 08:47 | 显示全部楼层
saservice 发表于 2025-4-9 22:15
如果不需要高速通信,适当降低时钟频率可以提高软件模拟的可靠性。

是的,500KB时钟速率,CLK波形还是比较好的
mattlincoln 发表于 2025-4-10 14:11 | 显示全部楼层
软件模拟SPI的速度远低于硬件SPI,因为每次操作都需要通过GPIO逐位传输数据。
 楼主| dffzh 发表于 2025-4-10 15:08 | 显示全部楼层
mattlincoln 发表于 2025-4-10 14:11
软件模拟SPI的速度远低于硬件SPI,因为每次操作都需要通过GPIO逐位传输数据。 ...

是的,通信速度上没办法比,只能在低速场景应用
kkzz 发表于 2025-4-10 15:54 | 显示全部楼层
默认实现了CPOL=0、CPHA=0的模式。如果目标设备要求其他模式,需要调整时钟信号的初始状态和采样点。
 楼主| dffzh 发表于 2025-4-10 16:12 | 显示全部楼层
kkzz 发表于 2025-4-10 15:54
默认实现了CPOL=0、CPHA=0的模式。如果目标设备要求其他模式,需要调整时钟信号的初始状态和采样点。 ...

是的,按从设备的规格要求来
i1mcu 发表于 2025-4-10 17:53 | 显示全部楼层
根据具体的SPI设备,选择正确的CPOL和CPHA值。
CPOL=0表示空闲时钟为低电平,CPOL=1表示空闲时钟为高电平。
CPHA=0表示在时钟的第一个边沿采样数据,CPHA=1表示在时钟的第二个边沿采样数据。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部