I2C寫(xiě)數(shù)據(jù):
I2C寫(xiě)數(shù)據(jù)時(shí)用 HAL_I2C_Master_Transmit 函數(shù),函數(shù)參數(shù)信息如下:
HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)
**DevAddress: **7bit從機(jī)地址左移 + 1bit 0
pData: 要發(fā)送的數(shù)據(jù),數(shù)據(jù)存儲(chǔ)規(guī)則是大端方式,即數(shù)據(jù)發(fā)送先發(fā)pData[0],再發(fā)pData[1],再發(fā)pData[2],以此類推。如下代碼,addr=0x01, data=0x0220,進(jìn)行數(shù)據(jù)打包到trans_data數(shù)組發(fā)送后,抓取波形如下。
trans_data[0] = addr;
trans_data[1] = data > > 8;
trans_data[2] = data & 0x00FF;
HAL_I2C_Master_Transmit(&hi2c1, (uint16_t)(TMP117_ADDR), trans_data, 3,0xFF);
I2C讀數(shù)據(jù):
I2C寫(xiě)數(shù)據(jù)時(shí)用 HAL_I2C_Master_Receive 函數(shù),函數(shù)參數(shù)信息如下:
HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)
DevAddress: 7bit從機(jī)地址左移 + 1bit 1
pData: 存儲(chǔ)讀到的數(shù)據(jù),數(shù)據(jù)仍然是大端模式,即第一個(gè)接收的數(shù)據(jù)存在pData[0],第二個(gè)存在pData[1],第三個(gè)存在pData[2],以此類推,如下代碼為處理抓取接收到的數(shù)據(jù),最終rt_data的值為 0x0E58。
HAL_I2C_Master_Transmit(&hi2c1, (uint16_t)(TMP117_ADDR), &addr, 1,0xFF);
HAL_I2C_Master_Receive(&hi2c1, (uint16_t)(TMP117_ADDR | 0x01), read_data, 2,0xFF);
rt_data = (read_data[0] < < 8) | read_data[1];
printf("rt_data is: 0x%04xrn", rt_data);
打印的結(jié)果:
這里需要注意下:
ST的HAL庫(kù),I2C讀函數(shù) HAL_I2C_Master_Receive 僅做讀那一部分操作,按照I2C協(xié)議,要完成從機(jī)的數(shù)據(jù)讀取,需要先尋址發(fā)送寄存器地址,然后再讀,所以這里需要使用I2C寫(xiě)函數(shù)HAL_I2C_Master_Transmit來(lái)配合。
-
寄存器
+關(guān)注
關(guān)注
31文章
5412瀏覽量
123113 -
STM32
+關(guān)注
關(guān)注
2288文章
10998瀏覽量
361938 -
數(shù)據(jù)存儲(chǔ)
+關(guān)注
關(guān)注
5文章
996瀏覽量
51588 -
I2C總線
+關(guān)注
關(guān)注
8文章
408瀏覽量
61853 -
HAL庫(kù)
+關(guān)注
關(guān)注
1文章
121瀏覽量
6706
發(fā)布評(píng)論請(qǐng)先 登錄
STM32CubeMx入門(mén)教程(7):I2C的讀寫(xiě)應(yīng)用

求助,關(guān)于STM32F412 I2C從模式HAL庫(kù)使用方法的疑問(wèn)求解
請(qǐng)問(wèn)cube hal庫(kù)的I2C讀寫(xiě)24c1024?
I2C總線規(guī)范與I2C器件C51讀寫(xiě)程序
STM32硬件i2c,CubeMX,Hal庫(kù)
I2C—讀寫(xiě)EEPROM
STM32F10x _硬件I2C讀寫(xiě)EEPROM(標(biāo)準(zhǔn)外設(shè)庫(kù)版本)

STM32V107VCT6,基于HAL庫(kù)的用IO口模擬I2C的0.96寸OLED驅(qū)動(dòng)

STM32學(xué)習(xí)之I2C協(xié)議(讀寫(xiě)EEPROM)

HAL庫(kù)之讀寫(xiě)STM32F103內(nèi)部的FLASH空間

STM32HAL庫(kù)硬件I2C驅(qū)動(dòng)INA226保姆級(jí)教程

STM32F1x HAL庫(kù)學(xué)習(xí)筆記(9)硬件 I2C(IIC)主從機(jī)的配置

評(píng)論