STM32F407与CS5531、CS5532、CS5533、CS5534通信程序解析

STM32F407与CS5531、CS5532、CS5533、CS5534通信程序解析一 版本信息 1 本文使用 SMT32F407 为例 使用 HAL 库 SPI 通信 2 CS5531 CS5532 CS5533 CS55534 理论上相通 本文以 CS5532 为例 二 参考程序 STM32 与 CS5532 通信程序 1 51 与 CS5532 通信程序 2 三 CS5532 理解注意事项 3 1 波特率

大家好,我是讯享网,很高兴认识大家。

一、版本信息

1.本文使用SMT32F407为例,使用HAL库,SPI通信。
2.CS5531、CS5532、CS5533、CS55534理论上相通,本文以CS5532为例。

二、参考程序

三、CS5532理解注意事项

3.1 波特率

在这里插入图片描述
讯享网
如上图所示,波特率最大为2MHz。

3.2 SPI模式

在这里插入图片描述
如上图所示,CS片选有效后,SDI、SDO在SCLK的第一个时钟延采集高低电平,第二个时钟转换数据。
对应STM32程序设置如下:

void MX_SPI3_Init(void) { 
    hspi3.Instance = SPI3; hspi3.Init.Mode = SPI_MODE_MASTER; hspi3.Init.Direction = SPI_DIRECTION_2LINES; hspi3.Init.DataSize = SPI_DATASIZE_8BIT; hspi3.Init.CLKPolarity = SPI_POLARITY_LOW; hspi3.Init.CLKPhase = SPI_PHASE_1EDGE; hspi3.Init.NSS = SPI_NSS_SOFT; hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_32; hspi3.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi3.Init.TIMode = SPI_TIMODE_DISABLE; hspi3.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; hspi3.Init.CRCPolynomial = 10; if (HAL_SPI_Init(&hspi3) != HAL_OK) { 
    Error_Handler(); } } 

讯享网

3.3 SPI对应GPIO口上下拉设置

讯享网void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle) { 
    GPIO_InitTypeDef GPIO_InitStruct = { 
   0}; if(spiHandle->Instance==SPI3) { 
    /* USER CODE BEGIN SPI3_MspInit 0 */ /* USER CODE END SPI3_MspInit 0 */ /* SPI3 clock enable */ __HAL_RCC_SPI3_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); /SPI3 GPIO Configuration PC10 ------> SPI3_SCK PC11 ------> SPI3_MISO PC12 ------> SPI3_MOSI */ GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.Alternate = GPIO_AF6_SPI3; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_12; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.Alternate = GPIO_AF6_SPI3; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); /* USER CODE BEGIN SPI3_MspInit 1 */ /* USER CODE END SPI3_MspInit 1 */ } 

3.4 中文手册有误

中文翻译手册中,单双极性处有误,正确的请参考英文手册。
在这里插入图片描述
英文的才正确。
在这里插入图片描述

四、调试过程遇到的问题和bug

4.1读取转换全部为0xFF

分析:
读取转换结果示意图
由上图可知,由于时序图中的td时间不确定,未等到SDO拉低,然后读取转换结果将出现全部为0xFF或者0x00的情况。

4.2 SPI的波形存在异常

紫色:NSS片选信号
黄色:SCLK时钟信号
蓝色:MOSI信号
绿色:MISO信号
波形异常
由上图可知,MOSI信号发生了缓慢下降,这是由于没有下拉设置的原因。

4.3 AD转换时间过长

以下为7.5SPS下的单词转换时间
在这里插入图片描述

在这里插入图片描述

五、程序和手册下载

附件为STM32与CS5532的通信程序。测试无bug。
点击下载资料
在这里插入图片描述

小讯
上一篇 2025-04-04 11:53
下一篇 2025-01-15 07:13

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/36101.html