STM32 HAL库 模拟SPI驱动 DAC8560
网上关于DAC8560相关的模拟SPI驱动的资料少的可怜,甚至连DAC8560的中文资料都不多,更不要提用HAL库进行编程的了,这实在是一块冷门芯片,本文主要是介绍讲解STM32 HAL库使用模拟SPI驱动DAC8560。
首先是SPI相关的简介:

然后是用STM32CubeMx初始化模拟SPI的引脚:

STM32CubeMx的GPIO输出的配置可以参考:

这里之所以是只用开三个GPIO输出来模拟SPI是因为它只用到了半双工通信。
我所用到的三个输出口分别对应8560上的三个SPI通信口。
SYNC:PA6
SCLK:PA7
DIN:PC4
在实际的应用中可以自行修改头文件中的GPIO口以配合硬件完成工程。
DAC8560 datasheet:
https://www.ti.com/lit/ds/symlink/dac8560.pdf

SYNC:CS 片选线
SCLK:SCLK 时钟线,用于时钟同步
DIN:DIN(MOSI) 输出24位信号的数据线

这里我们就可以看到DAC8560是时钟下降沿触发的



按照正常使用的方法,我们需要输出24位的数据。前8位中前6位始终置零,前8位的最后两位是控制电阻的(我们正常使用全部置零),后16位则是0x0000(0V)~0xffff(2.5V)对应的电压值,其中0x0000输出0V、0xffff输出2.5V,两者之中的分为65535份。
user_dac8560.h
配合硬件修改对应的IO口
user_dac8560.c
24位从高到低通过移位的方法依次发出,发送这24位前我们需要先拉低CS,在发送完成后再拉高。
注意:由于是下降沿触发因此我们需要先移位再拉低时钟
使用示例
参考文献:
具有 2.5V、2ppm/°C 基准的 16 位、单通道、低功耗、超低干扰、电压输出 DAC:
https://www.ti.com.cn/product/cn/DAC8560