STM32 HAL I2c读写24c02测试

STM32 电子创客营 10044次浏览 已收录 0个评论 扫描二维码

使用hal库来读写24c02还是很简单的。下面列一下具体步骤。

测试硬件:stm32F0 Discovery开发板,24c02我借用wzt51开发板上面的。

先用cubemx进行配置打开I2c

STM32 HAL  I2c读写24c02测试

接下来配置具体I2c的一些参数:

STM32 HAL  I2c读写24c02测试

我没有使用中断模式,也不用从模式,所以也就红圈圈起来的地方我配置了个速度,其他大部分都是默认。这样就可以

生成代码。

 

int main(void)
{

  /* USER CODE BEGIN 1 */
	uint8_t sbuf[]={0x09,0x06};
  uint8_t rbuf[5];
  /* USER CODE END 1 */

  /* MCU Configuration----------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  <a href="http://www.eemaker.com/tag/hal" title="查看更多关于HAL的文章" target="_blank">HAL</a>_Init();

  /* Configure the system clock */
  SystemClock_Config();

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_I2C1_Init();

  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		<a href="http://www.eemaker.com/tag/hal" title="查看更多关于HAL的文章" target="_blank">HAL</a>_I2C_Mem_Write(&hi2c1, 0XA0,1,I2C_MEMADD_SIZE_8BIT,sbuf,1,0xff);
		<a href="http://www.eemaker.com/tag/hal" title="查看更多关于HAL的文章" target="_blank">HAL</a>_Delay(5);
		<a href="http://www.eemaker.com/tag/hal" title="查看更多关于HAL的文章" target="_blank">HAL</a>_I2C_Mem_Read(&hi2c1, 0xA0, 1, I2C_MEMADD_SIZE_8BIT, rbuf, 1,0xfff);
		
		HAL_Delay(1000);
  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */

  }
  /* USER CODE END 3 */

}

接下来就是写主函数,st官方HAL库里面有直接的mem读写操作接口,也可以直接操作24c02。

不过这里有几个要注意的地方:

第一:读和写之间要加延时,要不然容易出现收不到应答的情况

第二:I2C_MEMADD_SIZE_8BIT   这个地方不要直接写数字,这也是我调试时候卡了我半天的地方

现在用逻辑分析仪抓取就没有问题了:

写操作

STM32 HAL  I2c读写24c02测试

读操作:

STM32 HAL  I2c读写24c02测试

 

 


转载请注明转自电子创客营:STM32 HAL I2c读写24c02测试! 了解我们点击这里

微信扫一扫关注我们的公众号:eemaker

STM32 HAL  I2c读写24c02测试


喜欢 (3)or分享 (0)
电子创客营
关于作者:

您必须 登录 才能发表评论!