STM32F407与CS5531、CS5532、CS5533、CS5534通信程序解析
一、版本信息
1.本文使用SMT32F407为例,使用HAL库,SPI通信。
2.CS5531、CS5532、CS5533、CS55534理论上相通,本文以CS5532为例。
二、参考程序
STM32与CS5532通信程序1
51与CS5532通信程序2
三、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_SCKPC11 ------> SPI3_MISOPC12 ------> 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。
点击下载资料
STM32F407与CS5531、CS5532、CS5533、CS5534通信程序解析相关推荐
- C++基于TCP/IP简单的客户端、服务器通信程序实例
本篇文章实现了一个基于TCP 的一个非常简单的客户/服务器通信程序实例.该程序中通讯协议使用的是面向连接的TCP协议SOCK_STREAM, 服务器的ip地址为本地地址即: 127.0.0.1,端口号 ...
- pyqt tcp通信_实验十 基于PyQt界面的TCP通信程序(一).doc_学小易找答案
[简答题]请同学们找一个目前已学的知识点,出一个题目上传,不能是上课讲的程序和上机的题目 [简答题]请拍照模块五完成情况 [简答题]请拍照模块六完成情况 [计算题]书本80页,3-7;3-8;3-9; ...
- Java21-day12【网络编程(网络编程入门(ip地址、端口、协议、InetAddress)、UDP通信程序、TCP通信程序)】
视频+资料[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg 提取码:zjxs] Java基础--学习笔记(零起点打开java世界的大门)--博 ...
- qt linux 串口eventdriven,详解 Qt 串口通信程序全程图文 (1)
Qt 串口通信程序全程图文 是本文介绍的内容,在Qt中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,我们这里也是使用的该类.我们可以去 http://sourc ...
- C语言 linux环境基于socket的简易即时通信程序
转载请注明出处:http://www.cnblogs.com/kevince/p/3891033.html --By Kevince 最近在看linux网络编程相关,现学现卖,就写了一个简易 ...
- 双机通信c语言程序,上传一个自己编写的I2C双机通信程序
本帖最后由 micro_听海 于 2012-11-24 19:58 编辑 这几天一直在搞AVR的twi(twi就是i2c)双机通信程序,使用的是两块arduino开发板.因为最总要这个通信程序最总是要 ...
- 详解 Qt 串口通信程序全程图文 (5)
Qt 串口通信程序全程图文是本文介绍的内容,本节也是最后一节,本节主要讲述的是解决一下重要问题的说明: (下面所说的第一个程序是指第一节中写的那个程序,第二个程序是指第三节更改完后的程序,第三个程序是 ...
- 详解 Qt 串口通信程序全程图文 (4)
Qt 串口通信程序全程图文是本文介绍的内容,本文一开始先讲解对程序的改进,在文章最后将要讲解一些重要问题. 1.在窗口中加入一些组合框Combo Box,它们的名称及条目如下: 串口:portName ...
- 详解 Qt 串口通信程序全程图文 (3)
Qt 串口通信程序全程图文是本文要介绍的内容,下面的程序在第一部分中所写的程序上进行了一些改进.加入打开和关闭串口,发送数据等功能. 1.加入了"打开串口","关闭串口& ...
- 详解 Qt 串口通信程序全程图文 (2)
Qt 串口通信程序全程图文是本文介绍的内容,上一部分中已经介绍了实现最简单的串口接收程序的编写,下面将对程序内容进行分析. 1.首先应说明操作串口的流程 步骤一:设置串口参数,如:波特率,数据位,奇偶 ...
最新文章
- Oracle数据库的语句级读一致性
- 用SHELL访问特定的URL
- java使用POI获取sheet、行数、列数
- get_metrology_object_measures获取测量区域和计量模型的计量对象的边缘位置结果
- python删除数据库的数据完整代码_利用python操作小程序云数据库实现简单的增删改查...
- mysql2008怎么重装_SQL Server2005、2008如何彻底删除卸载并重新安装?
- wchar_t与char转换(转载)
- IOS应用之一--异常处理(UncaughtExceptionHandler)
- 样本大小的确定_显着功效样本大小效应大小之间的关系
- 中南大学电磁场理论matlab,中南大学电磁场理论实验2.doc
- Mysql区分大小写问题
- 在Windows 7中使用AppLocker限制对程序的访问
- C#:Winform 打字测速程序 Typer
- URL欺骗的惯用招式(经典网络知识)
- Java程序设计基础【10】
- 国际群发短信平台适用于哪些行业?
- Excel公式大全 excel自动求减 15个常用excel函数公式
- windows配置OpenGL(VS C++版)
- 删除单据是提示反写出错,采购系统严格控制执行数量,不允许超过关联的收料通知单数量,并且收料通知单数量不能为负数...
- torch.squeeze 函数运用