UART / SPI / I2C:三种嵌入式通信协议对比与实战

嵌入式板级通信协议

一、三协议对比

协议 线数 速率 适用场景
UART 2 调试串口、GPS、蓝牙模块
SPI 4 屏幕、Flash、高速 ADC
I2C 2 传感器、EEPROM

二、UART 实战

HAL_UART_Transmit(&huart1, "Hello\r\n", 8, 100);

关注波特率一致——两端都配成 115200 才能通信。

三、SPI:全双工高速

主设备产生时钟,CS 片选选中从机:

HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET);
HAL_SPI_TransmitReceive(&hspi1, tx, rx, len, 100);
HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET);

四、I2C:双线寻址

一条时钟一条数据,靠 7 位地址区分设备:

HAL_I2C_Mem_Read(&hi2c1, 0x68 << 1, reg, 1, buf, 1, 100);

小结

选协议看场景:调试用 UART、高速用 SPI、多从机挂总线选 I2C。

评论(16)