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

具体的芯片信息在网址

用户手册在下面

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

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

现使用stm32芯片通讯DAC8512芯片

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

 通过上图的时序图可知,该芯片只需要接受不需要发送,并非为标准的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

按照上面的配置进行选择 

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

 

 实际上对应的是SPI的

 所以在cube中分别配置

 生成代码

 3、用户代码的编写

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

使用示波器观察波形

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

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

cube中选择数据位17

 编写代码,一个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数据线拉低

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

代码附件

https://download.csdn.net/download/qq_27699199/88268276

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值