打印
[STM32G0]

SPI串行外设接口驱动

[复制链接]
102|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaoqi000|  楼主 | 2024-12-31 03:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SPI 是一种全双工的高速串行通信协议,常用于与传感器、显示屏等外设通信。

SPI初始化
配置 SPI 外设:
c
复制代码
SPI_HandleTypeDef hspi1;

// 配置 SPI1
hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_MASTER;           // 设置为主模式
hspi1.Init.Direction = SPI_DIRECTION_2LINES; // 双线模式
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;    // 8 位数据
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;   // 时钟空闲低电平
hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;      // 数据采样在时钟的第一个边沿
hspi1.Init.NSS = SPI_NSS_SOFT;              // 软件控制 NSS 引脚
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; // 波特率分频
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;     // 先发送 MSB
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;     // 禁用 TI 模式
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; // 禁用 CRC 校验
HAL_SPI_Init(&hspi1);

使用特权

评论回复
沙发
xiaoqi000|  楼主 | 2024-12-31 03:02 | 只看该作者
发送数据:
c
复制代码
uint8_t txData[] = {0xAA, 0xBB, 0xCC};
HAL_SPI_Transmit(&hspi1, txData, sizeof(txData), HAL_MAX_DELAY);

使用特权

评论回复
板凳
xiaoqi000|  楼主 | 2024-12-31 03:03 | 只看该作者
接收数据:
c
复制代码
uint8_t rxData[3];
HAL_SPI_Receive(&hspi1, rxData, sizeof(rxData), HAL_MAX_DELAY);

使用特权

评论回复
地板
xiaoqi000|  楼主 | 2024-12-31 03:03 | 只看该作者
发送和接收数据:
c
复制代码
uint8_t txData[] = {0xAA, 0xBB};
uint8_t rxData[2];
HAL_SPI_TransmitReceive(&hspi1, txData, rxData, sizeof(txData), HAL_MAX_DELAY);

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

760

帖子

0

粉丝