|
我让一块 F407主机向另一块 F070从机发送 1 个字节的数据。 我在 SDA 和 SCL 引脚上外接了 4.7K 上拉电阻。出现错误,具体如下: 执行主机端以下代码后,得到错误码 32: ret = HAL_I2C_IsDeviceReady(&hi2c1, 30,1, 1000); if ( ret != HAL_OK) { uint32_t error_code = HAL_I2C_GetError(&hi2c1); printf("Error %d\r\n", error_code); } 执行主机端以下代码后,得到错误码 4: ret = HAL_I2C_Master_Transmit(&hi2c1, 30, TX_Buffer, 1, 1000); //最长1秒发送时间 if ( ret != HAL_OK) { uint32_t error_code = HAL_I2C_GetError(&hi2c1); printf("Error %d\r\n", error_code); } 貌似是设备地址配置错误或者其他类似的简单问题导致的。 |
在 STM32CubeIDE 中生成 ioc 配置文件
CAN 总线多节点环境下进行固件升级
在 Bootloader 运行期间保持 GPIO 引脚电平状态不变
把 MCO1 时钟源选为 PLLCLK会怎样
CubeIDE 下载程序时不整片擦除芯片
在编译C++ STM32项目时,如何将.hpp文件扩展名与合并了头文件声明和源文件定义的模板
sscanf 函数无法正确读取浮点值
TIM5 1μs 定时无法触发回调函数
如何将 LoRa993 模块与 STM32F401RE 对接
STM32F407 音频输入输出时 IFFT 无法正常工作
微信公众号
手机版
可以通过示波器看一下。顺便检查一下发出的地址和从设备配置的地址是否一致。
从示波器看时序么?
逻辑分析仪更适用
从机I2C的地址是否正确?从机回应了信息么?
从示波器上看更直接,顺便看看波形是否合适。有的时候外部电阻电容不合适导致波形异常也能看出来。
数据短,很容易看到第九个信号是否是ACK信号。
你确认下,设备地址给对没有。
使用HAL_I2C_IsDeviceReady()函数时,地址数据参数应该是实际设备地址左移后的值。