stm32h743ViTx CubeMx spi主、从机实验

1.spi1 作为从机,接收主机a:COM10(上位机模拟软件,也可以是树莓派等,只要能作为spi主机就行)发送的数据,spi1接收中断中,rx_data每次收到数据count就加一,并且把加一后的count值重新赋值给缓存区rx_data。同时,开启spi2为主机,把rx_data新的值发送给从机a:COM8(另一个上位机模拟软件)。

1.CubeMx 使能SPI1从机,注意红框中的配置参数,不明白的查资料,不想再细讲,重点是使能Hardware NSS Input Sinnal,即片选信号
在这里插入图片描述
2.1.CubeMx 使能SPI2主机,注意红框中的配置参数,不明白的查资料,不想再细讲,重点是使能Hardware NSS Output Sinnal,即片选信号
在这里插入图片描述
3.主机a:COM10开始发送aaaaa给stm32的spi1 ,stm32 spi1 接收到主机a数据后,计数加一,重新赋值给rx_data;stm32 spi2 开启主机功能将最新的rx_data发送给从机a:COM8.
在这里插入图片描述
4.软件仿真,验证rx_data随着接收数据的数量二变化的,及从机a:com8收到的值
在这里插入图片描述
4.注:片选也,也可以开启软件功能,即实际收发时候主动拉高拉低片选信号或者主动拉高拉低某个个GPIO,通常使用在主从一对一的场景。

5.注意:要将开启接收中断的函数放在SPI1_IRQHandler(void)中,如果放在HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi)会发现接收丢包,这个可以自己测试验证
在这里插入图片描述
6.代码:主程序
在这里插入图片描述
7.spi1接收中断:

在这里插入图片描述
在这里插入图片描述
编译失败可能是缺少这些。
在这里插入图片描述
8.疑问:
如果在主函数while中试图将每次从主机com10接收到的rx_data值发送回主机con10,发现主机com10接收到的数据保持不变,即使主机改变了发送的数据,没想明白为什么。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值