一.硬件iic的初始化解读

1.stm32上硬件iic一般有三个,与模拟iic区别在于引脚固定。
2.硬件iic是属于外设的,和串口一个性质。
3.既然是外设,就有其对应的固件库。
配置界面
在这里插入图片描述
初始化设备的改动
在这里插入图片描述
主要调用的函数
其中主从设备通信用于双机通信,有来有往。
设备通信用于向设备(如oled,eeprom等)进行通信。
在这里插入图片描述

二.函数的解读

1.初始化硬件iic的发送进行封装

//用于向设备发送指令。
void WriteCommand(uint8_t Command)
{
	uint8_t date=0;
	HAL_I2C_Mem_Write(&hi2c1, 0x78,0x00, I2C_MEMADD_SIZE_8BIT,(uint8_t *)&Command, 1, 0xff);
	if(HAL_I2C_IsDeviceReady(&hi2c1,0x78,100,0xffff)==HAL_OK)
	 {
		
	 }

}
//用于向从设备发送数据
void  WriteData(uint8_t Byte)
{
		HAL_I2C_Master_Transmit(&hi2c1, 0x78,(uint8_t *)&Byte, 1, 0xff);
		if(HAL_I2C_IsDeviceReady(&hi2c1,0x78,100,0xffff)==HAL_OK)
	 {
	
	 }

}

2.iic写函数解读(一般根据对象不同能容稍有差别,但作用是一样的都是写数据到丛机)

在这里插入图片描述

在这里插入图片描述

3.iic读函数解读

在这里插入图片描述

在这里插入图片描述

三.关于从设备的地址的解读

一般通过官方的数据或设备信息中查找设备地址
例如eeprom
在这里插入图片描述

地址:
其中的1010 和后四位组成了设备地址。
p和A,分别是设备地址和页地址的组合。及a a a 000 ,p p p 111
通过阅读手册知道r和w对应的分别为0和1,
可以这样看对于1010 AAA r/w
1010 0001 w
1010 0000 r
转成16进制数
0xA0 读
或
0xA1 写

iic的oled屏幕的
在这里插入图片描述

地址
其中b7-b0共8位,其中sa0无关紧要,r 1 ,w0
0111 1000 w
0x78
0111 1010 r
0x7a

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐