普冉(PUYA)单片机开发笔记(11): I2C通信-配置主从收发

本文详细描述了如何在PY32F003单片机上配置I2C主从通信,涉及硬件连接、代码实现、中断处理和DMA配置,以及实验结果和注意事项。

概述

在上一篇《普冉(PUYA)单片机开发笔记(10): I2C通信-配置从机-优快云博客》配置了 PY32F003 的 I2C 从机一侧,今天配置主机,并实现主-从机之间的报文收发。

为了完成这个实验,需要两块 PY32F003F18P 的开发板,连接线路如下表所示。注意主从机必须共地,要专门拉一根杜邦线把两块开发板的 GND 连接好。

I2C 主从通信的管脚连接
开发板 主机 从机 备注
3V3 连接 连接 同一个电源
GND 连接 连接 主从机必须共地
UART2_TX PA1 PA1 接到上位机 USB-TTL 模块
UART2_RX PA0 PA0 接到上位机 USB-TTL 模块
I2C_SCL PA3 PA3 主从用杜邦线连接
I2C_SDA PA2 PA2 主从用杜邦线连接

连接好以后,在上位机开两个 XCOM 的窗口,各自连接主机和从机的串口,以便观察运行结果。就像附后“实验结果”中的截图,上位机的 COM3 接从机的串口,COM32 接主机的串口。

代码实现步骤

老套路,main.h 中定义函数原型,app_i2c.c 中实现这些函数,py32_f0xx_hal_msp.c 中对I2C 用到的管脚进行初始化,对用到的中断和 DMA 进行初始化;py32_f0xx_it.c 中重定向 I2C_IRQHandler。上干货 ;)

1. 在 main.h 中定义四个函数原型

#define I2C_COMM_TEST   1
#define I2C_SLAVE       0

...
...

#if(I2C_COMM_TEST)
/** ----------------------------------------------------------------------------
* @name   : HAL_StatusTypeDef app_i2c_init(void);
* @brief  : i2c 初始化
* @param  : 
* @retval : HAL_OK: 写入成功; 其它: 错误
* @remark : 上级函数必须检查操作返回值, 只有 HAL_OK 时才可继续操作
*** ----------------------------------------------------------------------------
*/
HAL_StatusTypeDef app_i2c_init(void);

/** ----------------------------------------------------------------------------
* @brief  : i2c 测试使用的三个函数, 接收/发送/等待
* @param  : 
* @retval : 
* @remark : 
*** ----------------------------------------------------------------------------
*/
#if(I2C_SLAVE)
HAL_StatusTypeDef app_i2c_slave_receive(void);
HAL_StatusTypeDef app_i2c_slave_transmit(void);
#else
HAL_StatusTypeDef app_i2c_master_receive(void);
HAL_StatusTypeDef app_i2c_master_transmit(void);
#endif

void app_i2c_wait(void);

#endif

其中,为了在同一个工程中容纳主从两部分的代码,预定了 I2C_COMM_TEST 和 I2C_SLAVE,如果 I2C_SLAVE

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硬核老骆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值