H7-TOOL的SPI控制器主从机操作说明,20cm杜邦线接线方式,SPI全双工25MHz通信速度(2022-04-10)
H7-TOOL做主机,STM32H7做从机。V7开发板SPI从机程序下载,这个是专门为TOOL测试做的一个从机程序:
https://www.armbbs.cn/static/image/filetype/zip.gifSPI从机测试例子.7z (7.64MB)
1、硬件接线方式如下:
_________________________ _____________________________
| ______________| |______________________ |
| | SPI1 | | SPI1 | |
| | | | | |
| | CLK(D5) |______________________|(PB3)CLK | |
| | | | | |
| | MISO(D3) |______________________|(PB4)MISO | |
| | | | | |
| | MOSI(D2) |______________________|(PB5)MOSI | |
| | | | | |
| |______________| |______________________| |
| __ | | |
| |__| | | |
| USER | | |
| GND|______________________|GND |
| | | |
|_H7-TOOL Master _________| |_STM32H7 Slave ______________|
程序里面默认做的是4字节全双工处理,大家可以根据自己的需求修改。
2、TOOL上位机配置如下,每次点击执行都可以看到效果:
大家自己修改使用,不需要每次都执行初始化,初始化仅需执行一次即可,即LUA函数SPI_Init仅执行一次即可。
大家将TOOL的串口线也和板子接上,可以看到TOOL的SPI控制器发给板子的数据:
3、这里注意一点即可,下面三个的实现本质是一样的,都是基于SPI全双工方式:
(1)仅写数据:实际上也有返回的全双工方式,只是程序没有使用。
(2)仅读取数据:也是全双工方式。
(3)读写数据:这里实际上同样是全双工方式,比如下面的配置同样是4次全双工通信,只是前两次用于写入,后两次用于读取,总共也是4次。
大家可以根据需要,配合延迟和循环之类的函数做其他操作。
下面是测试仅写效果:
下面是测试仅读效果:
更新完毕,更多的SPI主从机相关知识可以看V7开发板的SPI主从机双机通信教程:
教程第94章:https://www.armbbs.cn/forum.php?mod=viewthread&tid=86980
这个接受或者发送必须要指定长度,如果不知道要接受多少长度,这个值赋多少呢? luis_13 发表于 2022-11-14 09:40
这个接受或者发送必须要指定长度,如果不知道要接受多少长度,这个值赋多少呢?
不定长不用管这个,当然,越大越好。越大,每个缓存可以处理的时间就越长。
SPI DMA不定长的本质是双缓冲机制,一直开着接收就行。 eric2013 发表于 2022-11-14 11:04
不定长不用管这个,当然,越大越好。越大,每个缓存可以处理的时间就越长。
SPI DMA不定长的本质是双 ...
ok谢谢硬汉各。 明白了。 可以h7-tools作为从机,单片机作为主机吗?在SPI不变差分驱动的情况下,降低总线塑料到2MHZ,中间线束能达到40cm吗? 杰瑞鼠 发表于 2023-9-19 16:20
可以h7-tools作为从机,单片机作为主机吗?在SPI不变差分驱动的情况下,降低总线塑料到2MHZ,中间线束能达到 ...
TOOL的SPI主从都已经做好了,测试两个TOOL使用50cm线可以50MHz双机通信,都是LUA API控制。API非常简单。 还是焊接上稳定牢固
SPI主从通信是全双工通信, 收发同时进行的。
主机写数据操作:比如写4个字节数据,实际也返回4个字节数据,只是我们没使用。
主机读数据操作:比如读取4个字节数据,实际我们也写入了4个数据,只是写入的什么不重要了。
主机写入后读取: 比如写入2个字节,读取2个字节,实际是连续进行了4次全双工通信,写入的2个数据使用前两次全双工,读取使用的后两个全双工。
页:
[1]