STM32硬件SPI发送超8字节数据格式

这篇具有很好参考价值的文章主要介绍了STM32硬件SPI发送超8字节数据格式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

stm32单片机的 SPI+DMA 从机接收_stm32 spi dma接收_williamlee_的博客-CSDN博客

问题原由

一般CPU提供的spi接口,支持的是整字节访问,如8bit、16bit等。而非整字节的spi外设(芯片)也是很常见,哪怕是整字节的,很多厂家也是做得与标准spi外设有差别,估计是避开专利问题。而芯片原厂提供的Demo也大多是采用GPIO模拟spi。一般情况下,根据芯片手册说明及访问时序图,可以使用CPU集成的标准硬件spi访问,以提高速度和节约CPU资源。

2常用非标spi外设

常见的非标spi外设是DAC、ADC,ADI的器件最常见。

【1】ADC,常用12bit、14bit、24bit,如AD7684、MCP3202。
【2】DAC,常用12bit、14bit、24bit。
【3】其他,电机芯片、IO扩展芯片、LED驱动芯片,如TMC2660。

我所使用的芯片型号是 STM32H723VGT6

spi数据传输格式,stm32,嵌入式硬件,单片机

具体的芯片信息在网址

用户手册在下面

(1条消息) 【免费】STM32H743参考手册中文版资源-CSDN文库

STM32H723VGT6_(ST(意法半导体))STM32H723VGT6中文资料_价格_PDF手册-立创电子商城 (szlcsc.com)

现使用stm32芯片通讯DAC8512芯片

spi数据传输格式,stm32,嵌入式硬件,单片机

 芯片手册sxDAC8512 +5V, Serial Input Complete 12-Bit DAC (szlcsc.com)

spi数据传输格式,stm32,嵌入式硬件,单片机

spi数据传输格式,stm32,嵌入式硬件,单片机

 通过上图的时序图可知,该芯片只需要接受不需要发送,并非为标准的SPI总线,我们现在的思路是使用硬件spi,只是使用SPI1SCK和SPI1MOSI,即SPI单向输出数据到DAC芯片,SPI1MISO的线不使用,CS片选线使用软件io模拟,同时按照上面的时序图定义一个io口,对LD线进行io控制,发送信号时拉高,空闲时拉低。

SCK:SPI硬件

MOSI:SPI硬件

CS:软件模拟

LD:软件模拟

1、首先看stm32芯片手册支持的多字节数据格式

从芯片手册中可以知道,硬件SPI的数据大小可从 4 位到 32 位,该芯片支持多数据选择,必须要看手册的该项规格,有些可能不支持多数据位

2、在cubemx中配置硬件SPI

spi数据传输格式,stm32,嵌入式硬件,单片机

按照上面的配置进行选择 

 对于CPOL和CPHA的选择在手册中有说明

spi数据传输格式,stm32,嵌入式硬件,单片机

 spi数据传输格式,stm32,嵌入式硬件,单片机

 实际上对应的是SPI的

spi数据传输格式,stm32,嵌入式硬件,单片机

spi数据传输格式,stm32,嵌入式硬件,单片机

 所以在cube中分别配置spi数据传输格式,stm32,嵌入式硬件,单片机

 生成代码spi数据传输格式,stm32,嵌入式硬件,单片机

 3、用户代码的编写

spi数据传输格式,stm32,嵌入式硬件,单片机

 直接使用底层函数调用发送,其中用户函数的数组定义为uint16类型

使用示波器观察波形

spi数据传输格式,stm32,嵌入式硬件,单片机

spi数据传输格式,stm32,嵌入式硬件,单片机

蓝色为sck线,黄色为MOSI线,每次发送的数据位是12位。

 4、同理,我们尝试发送17位数据位

cube中选择数据位17

spi数据传输格式,stm32,嵌入式硬件,单片机

 编写代码,一个32位整型数组

    uint32_t  da[1]={0xaaaaa};
	
	DAC8512_LD_H;  //MISO数据线拉高
	DAC8512_CS_WritePin(4,0);  //片选拉低
	//硬件SPI传输17位数据格式
	st=HAL_SPI_Transmit(&hspi1, da, 1, 10);  //硬件SPI的数据位设置为12
	DAC8512_CS_WritePin(4,1);  //片选拉高
	DAC8512_LD_L;  //MISO数据线拉低

spi数据传输格式,stm32,嵌入式硬件,单片机

 stm32    SPI的硬件底层会自动帮你处理数据格式,发送17位数据,不需要再来控制这个过程。

代码附件

https://download.csdn.net/download/qq_27699199/88268276文章来源地址https://www.toymoban.com/news/detail-752981.html

到了这里,关于STM32硬件SPI发送超8字节数据格式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32的SPI硬件CRC校验(个人学习记录)

    一、功能实现         为了保证SPI通信数据的准确性,需要通过对每个数据进行CRC校验,保证设备运行正常。 二、基本原理 SPI通信可以通过以下步骤使用CRC: ● 设置CPOL、CPHA、LSBFirst、BR、SSM、SSI和MSTR的值; ● 在SPI_CRCPR寄存器输入多项式; ● 通过设置SPI_CR1寄存器CRCEN位使

    2024年02月11日
    浏览(42)
  • STM32的硬件SPI驱动AD7124的方法

    AD7124是一款适合高精度测量应用的低功耗、低噪声、完整模拟前端。该器件内置一个低噪声24位Σ-Δ型模数转换器(ADC),可配置来提供8个差分输入或15个单端或伪差分输入。片内低噪声级确保ADC中可直接输入小信号。可用于温度测量、压力测量、工业过程控制、仪器仪表和只能

    2024年02月07日
    浏览(78)
  • STM32 硬件SPI+DMA实现快速刷TFT屏

    首先在TB上找一块SPI驱动的彩屏,下载商家提供的示例 例如我买的一款2.8寸SPI的TFT彩屏,商家提供的资料很齐全,模拟SPI和硬件SPI驱动的程序都有 打开硬件SPI驱动的工程,商家提供的代码是SPI2驱动,想换成其他的SPI可以到SPI.c文件中更改 打开main.c,测试一下简单颜色填充刷

    2024年04月15日
    浏览(63)
  • STM32F103硬件SPI驱动ADS1256

    最近实验室有几个项目都需要用到高分辨率AD转换,于是就开始了ADS1256的开发。 新手,焊得丑,见谅(能用就行) 二: 本以为很容易就能做完,结果被采样速率的问题困扰了很久。 代码如下,使用2.5V基准源进行测试,结果在读ADS时经常出现读出0xFFFFFF的情况,只能忍住悲伤

    2024年02月12日
    浏览(76)
  • STM32配合CubeMX硬件SPI驱动0.96寸OLED

    目录 一、简单介绍 1.1 OLED 1.2 SPI协议 接口 优点 缺点 数据传输 二、实战 2.1 工程配置 2.2 测试工程 2.3 波形分析 三、驱动OLED 3.1 初始化代码 3.2 清屏函数 3.3 设置坐标函数 3.4 显示字符函数 3.5 显示字符串函数 3.6 显示图片函数 附录 驱动代码文件 oled.c oled.h f6x8.h 1.1 OLED 有机发

    2024年02月02日
    浏览(39)
  • 【STM32】STM32学习笔记-硬件SPI读写W25Q64(40)

    在大容量产品和互联型产品上,SPI接口可以配置为支持SPI协议或者支持I2S音频协议。SPI接口默认工作在SPI方式,可以通过软件把功能从SPI模式切换到I2S模式。 在小容量和中容量产品上,不支持I2S音频协议。 串行外设接口(SPI)允许芯片与外部设备以半/全双工、同步、串行方式

    2024年02月19日
    浏览(69)
  • U8g2库的STM32硬件SPI(DMA)移植教程(HAL、OLED显示、四线SPI、DMA)

    本文教你把U8g2图形库移植到STM32上,基于STM32的硬件SPI、CubeMX U8g2库Github网址:https://github.com/olikraus/u8g2 U8g2库CSDN镜像网址:https://gitcode.net/mirrors/olikraus/u8g2?utm_source=csdn_github_accelerator 硬件准备:STM32C8T6(STM32系列芯片)、0.96寸OLED(128×64)、J-Link(或其他) 引脚连接: 出自此

    2024年02月09日
    浏览(50)
  • STM32模拟SPI控制NRF24L01发送和接收

    NRF24L01是一款2.4Ghz ISM频段无线收发芯片。NRF24L01模块可视为无需配对和连接型的WIFI或蓝牙模块。NRF24L01可工作于1发6收工作模式。一个NRF24L01模块工作于发送模式时,每次根据设定的接收端地址发送射频信号和数据;一个NRF24L01模块工作于接收模式时,可以接收来自1~6个发送端

    2024年02月08日
    浏览(47)
  • 基础篇010.2 STM32驱动RC522 RFID模块之二:STM32硬件SPI驱动RC522

    目录 1. 实验硬件及原理图 1.1 RFID硬件 1.2 硬件原理图 2. 单片机与RFID硬件模块分析 3. 利用STM32CubeMX创建MDK工程 3.1 STM32CubeMX工程创建 3.2 配置调试方式 3.3 配置时钟电路 3.4 配置时钟 3.5 配置GPIO 3.6 配置SPI 3.7 配置串口 3.8 项目配置 4. MDK工程驱动代码调试 4.1 按键、LED程序 4.1.1 Us

    2024年02月09日
    浏览(53)
  • STM32 SPI对存储芯片发送写是能命令后一直忙等待

    我采用CUBE配置的SPI外设,对NSS引脚选择了硬件输出,这种方式对读取命令没有影响,但是对写命令有,当我发送写是能命令后,读取状态寄存器的值一直都是忙,我猜测这可能是硬件控制NSS引脚后,对于HAL_SPI_Transmit等命令,内部没有实现NSS的拉高和拉低操作,所以才会出现

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包