2019-12-11 18:20发布
szjqt 发表于 2018-6-30 13:59 IIC模式不管是STM32 还是STM8 都没上拉,必须自己加。要达到100khz的速度建议使用1k的电阻,不要用太大的, ...
ujewm 发表于 2019-4-11 07:11 你好!我是个新手,最近调试STM32 F746硬件I2C的从机模式,用CubeMX配置的PB8,PB9分别为SDA,SLC, 然后从 ...
szjqt 发表于 2019-4-12 21:09 你确定发出去了么,我一般都是用示波器确定看到波形。如果要看到数据就接上逻辑分析仪,看看发出的数据到 ...
love_zjb 发表于 2019-4-12 21:21 用模拟吧,哈哈哈
ujewm 发表于 2019-4-12 23:17 今天连接的时候Arduino Due这边收到了,但不超过一秒,就挂掉了,挂掉之后我重新上传i2c scanner到arduin ...
最多设置5个标签!
你好!我是个新手,最近调试STM32 F746硬件I2C的从机模式,用CubeMX配置的PB8,PB9分别为SDA,SLC, 然后从机地址设置为30,I2C初始化如下
/* I2C1 init function */
static void MX_I2C1_Init(void)
{
hi2c1.Instance = I2C1;
hi2c1.Init.Timing = 0x20404768;
hi2c1.Init.OwnAddress1 = 60;
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
hi2c1.Init.OwnAddress2 = 0;
hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
if (HAL_I2C_Init(&hi2c1) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
/**Configure Analogue filter
*/
if (HAL_I2CEx_ConfigAnalogFilter(&hi2c1, I2C_ANALOGFILTER_ENABLE) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
/**Configure Digital filter
*/
if (HAL_I2CEx_ConfigDigitalFilter(&hi2c1, 0) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
}
用arduino due做主机,寻址寻不到,实物接线图,我上传了,应该没问题,不知道是什么原因...
你确定发出去了么,我一般都是用示波器确定看到波形。如果要看到数据就接上逻辑分析仪,看看发出的数据到底是不是我所设置的。如果都对了那就只能是硬件问题了。
今天连接的时候Arduino Due这边收到了,但不超过一秒,就挂掉了,挂掉之后我重新上传i2c scanner到arduino想看看STM32还在不在I2C线上,结果找不到,不知道什么原因
我今天试试软件I2C,真是愁死我了
软件的你可以这样写,硬件这样不行的哦。
硬件要把从端掉线,干扰等各种问题都有考虑进去。主机是根据从机的状态决定通信流程的。你要把检测从机故障的超时做在while中,否则一旦掉线甚至手碰一下,主机都会锁死的。
一周热门 更多>