|
我让一块 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); } 貌似是设备地址配置错误或者其他类似的简单问题导致的。 |
USB Host 外部中断按键失效
调用HAL_FLASH_OB_Unlock()直接进入 HardFaultHandler
串口DMA收发出现ORE错误
STM32 增加 WiFi + 以太网的低成本方案
NUCLEO G474RE无法运行程序
在RS485通信中如何有效避免误码,距离5米,速率115200
STM32F407VGT6 开发板Beak at address "0x0" with no debug information our outside
BootLoader 与 DFU 模式的区别
调度器原子变量相关问题
运行到 WRITE_REG (FLASH->OPTKEYR, FLASH_OPTKEY1)跳转 HardFaultHandler
微信公众号
手机版
可以通过示波器看一下。顺便检查一下发出的地址和从设备配置的地址是否一致。
从示波器看时序么?
逻辑分析仪更适用
从机I2C的地址是否正确?从机回应了信息么?
从示波器上看更直接,顺便看看波形是否合适。有的时候外部电阻电容不合适导致波形异常也能看出来。
数据短,很容易看到第九个信号是否是ACK信号。
你确认下,设备地址给对没有。
使用HAL_I2C_IsDeviceReady()函数时,地址数据参数应该是实际设备地址左移后的值。