SPI 读取不同长度 寄存器_STM32硬件SPI主从通信实例

该博客介绍了基于STM32F103ZET6的SPI1与SPI2主从通信实例,详细阐述了硬件连接、通信流程和代码实现。主机通过查询方式发送数据,从机中断接收并加0x05回应。文中通过SPI的发送和接收缓冲区解释了数据交互过程,并展示了中断函数和初始化函数的代码。验证情况证实了通信的正确性。
摘要由CSDN通过智能技术生成

例子说明及框图

本例子基于STM32F103ZET6芯片,实现SPI1与SPI2的主从通信。其中SPI1配置为主机,SPI2配置为从机,均配置为全双工模式。硬件连接图:

b44667e33124aa2797f9335753fb85ad.png

其中,我们需要注意的是,SPI的从机不能主动发送数据,只能应答数据。本例子的数据交互过程:

1、主机使用查询方式发送数据给从机。

2、从机使用中断接收方式接收数据,把接收到的数据加上0x05再发送给主机。

从机总是在收到主机的数据时,才会发送数据给从机。即从机被动发送数据,也即主机主动申请数据。

代码细节

主函数:

int main(void){       uint8_t i = 0;        //-----------------------------------------------------------------------------------------------     // 上电初始化函数    SysInit();        //-----------------------------------------------------------------------------------------------     // 主程序    while (1)    {        /* 主机发、收数据 */        for (i = 0; i < SPI_BUF_LEN; i++)        {            ucSPI1_RxBuf[i] = SPI1_ReadWriteByte(ucSPI1_TxBuf[i]);        }    }        return 0;}

其中,ucSPI1_RxBuf与ucSPI1_TxBuf的定义为:

uint8_t ucSPI1_RxBuf[SPI_BUF_LEN] = {0};uint8_t ucSPI1_TxBuf[SPI_BUF_LEN] = {0x01, 0x02, 0x03, 0x04, 0x05};

SPI1_ReadWriteByte函数为SPI1的读写函数,其作用是往SPI1发送缓冲区写入数据的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值