单片机
返回首页

STM32 HAL库 模拟SPI驱动 DAC8560

2025-10-27 来源:bilibili

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


首先是SPI相关的简介:

SPI通信 高冠避役 · 800阅读

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

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

STM32CubeMx GPIO口输出 高冠避役 · 960阅读

这里之所以是只用开三个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口


#ifndef __USER_DAC8560_H

#define __USER_DAC8560_H


#ifdef __cplusplus

extern 'C' {

#endif

#include 'main.h'

#define CS_H HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_SET)

#define CS_L HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET)

#define SCLK_H HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET)

#define SCLK_L HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET)

#define DIN_H HAL_GPIO_WritePin(GPIOC, GPIO_PIN_4, GPIO_PIN_SET)

#define DIN_L HAL_GPIO_WritePin(GPIOC, GPIO_PIN_4, GPIO_PIN_RESET)

void WriteDac8560(uint32_t Data);


#ifdef __cplusplus

}

#endif


#endif

user_dac8560.c


    24位从高到低通过移位的方法依次发出,发送这24位前我们需要先拉低CS,在发送完成后再拉高。


    注意:由于是下降沿触发因此我们需要先移位再拉低时钟


#include 'user_dac8560.h'

#include /**

  * 函数名称:DAC8560写函数

  * 函数功能:给DAC8560发数据

  * 形   参:dac值

  * 返回值 :无

  */

void WriteDac8560(uint32_t Data)

{

SCLK_H;

DIN_L;

CS_H;

HAL_Delay(1);

CS_L;

for(uint8_t i = 0; i < 24;i++)

{

SCLK_H;

if(Data & 0x800000)

DIN_H;

else

DIN_L;

Data<<=1;

SCLK_L;

}

CS_H;

HAL_Delay(1);

DIN_L;

}


使用示例


WriteDac8560(0x8888); // 输出(0x8888/0xffff)*2.5V=1.25V

参考文献:


具有 2.5V、2ppm/°C 基准的 16 位、单通道、低功耗、超低干扰、电压输出 DAC:


https://www.ti.com.cn/product/cn/DAC8560


进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦四级调频发射机

  • 500W MOS场效应管电源逆变器,12V转110V/220V

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外开关

  • 12V转110V/220V 500W逆变器

  • DS1669数字电位器

    相关电子头条文章