STM32CubeMx開發之路—10使用IIC讀寫24C02
運行環境
Windows10
STM32CubeMX
Version 5.2.0
Keil5(MDK5)
Version 5.28.0.0
簡介
本例程主要講解如何使用硬件IIC讀寫24C02
STM32CubeMx基本配置
基礎配置過程請參考 STM32CubeMx(Keil5)開發之路—配置第一個項目
CubeMX配置
代碼修改
- 添加代碼(講解寫在代碼裏面)
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
#define EE_TYPE 255 //類型
#define ADDR_24LCxx_Write 0xA0 //寫指令IIC地址
#define ADDR_24LCxx_Read 0xA1 //讀指令IIC地址
#define BufferSize 10 //讀寫大小(注意不要設置太大)
uint8_t WriteBuffer[BufferSize] = {0,1,2,3,4,5,6,7,8,9}; //需要寫的數據在WriteBuffer當中
uint8_t ReadBuffer[BufferSize]; //讀出來的數據放進ReadBuffer當中
int i = 0;
/* 調試打印 */
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch,1, 0xFFFF);
return ch;
}
/* USER CODE END 0 */
- main函數
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_I2C2_Init();
/* USER CODE BEGIN 2 */
/* 寫數據 */
HAL_Delay(5);
if(HAL_I2C_Mem_Write(&hi2c2, ADDR_24LCxx_Write, 0, I2C_MEMADD_SIZE_8BIT,WriteBuffer,BufferSize, 0x10) != HAL_OK)
{
printf("Write fail!\n");
}
/* 讀數據 */
HAL_Delay(5);
if(HAL_I2C_Mem_Read(&hi2c2, ADDR_24LCxx_Read, 0, I2C_MEMADD_SIZE_8BIT,ReadBuffer,BufferSize, 0x10) != HAL_OK)
{
printf("Read fail!\n");
}
/* 測試輸出 */
for(i=0; i<BufferSize; i++)
{
printf("0x%02X ",ReadBuffer[i]);
}
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
運行結果
- 燒錄進去,用串口調試助手
- 發現輸出的就是我們存進的數據,說明測試成功
源碼
小結
IIC在實際應用過程非常廣泛,是嵌入式需瞭解的協議之一,所以一定要好好理解!
備註:提供一下個人微信號 Hleafleafleaf,歡迎加好友,共同學習!共同進步!