STM32 HAL庫 模擬SPI驅(qū)動(dòng) DAC8560
????網(wǎng)上關(guān)于DAC8560相關(guān)的模擬SPI驅(qū)動(dòng)的資料少的可憐,甚至連DAC8560的中文資料都不多,更不要提用HAL庫進(jìn)行編程的了,這實(shí)在是一塊冷門芯片,本文主要是介紹講解STM32 HAL庫使用模擬SPI驅(qū)動(dòng)DAC8560。
????首先是SPI相關(guān)的簡(jiǎn)介:

????然后是用STM32CubeMx初始化模擬SPI的引腳:

? ? STM32CubeMx的GPIO輸出的配置可以參考:

????這里之所以是只用開三個(gè)GPIO輸出來模擬SPI是因?yàn)樗挥玫搅税腚p工通信。
????我所用到的三個(gè)輸出口分別對(duì)應(yīng)8560上的三個(gè)SPI通信口。
SYNC:PA6
SCLK:PA7
DIN:PC4
????在實(shí)際的應(yīng)用中可以自行修改頭文件中的GPIO口以配合硬件完成工程。
????DAC8560 datasheet:
https://www.ti.com/lit/ds/symlink/dac8560.pdf

SYNC:CS 片選線
SCLK:SCLK 時(shí)鐘線,用于時(shí)鐘同步
DIN:DIN(MOSI) 輸出24位信號(hào)的數(shù)據(jù)線

這里我們就可以看到DAC8560是時(shí)鐘下降沿觸發(fā)的



????按照正常使用的方法,我們需要輸出24位的數(shù)據(jù)。前8位中前6位始終置零,前8位的最后兩位是控制電阻的(我們正常使用全部置零),后16位則是0x0000(0V)~0xffff(2.5V)對(duì)應(yīng)的電壓值,其中0x0000輸出0V、0xffff輸出2.5V,兩者之中的分為65535份。
user_dac8560.h
配合硬件修改對(duì)應(yīng)的IO口
user_dac8560.c
????24位從高到低通過移位的方法依次發(fā)出,發(fā)送這24位前我們需要先拉低CS,在發(fā)送完成后再拉高。
????注意:由于是下降沿觸發(fā)因此我們需要先移位再拉低時(shí)鐘
使用示例
參考文獻(xiàn):
具有 2.5V、2ppm/°C 基準(zhǔn)的 16 位、單通道、低功耗、超低干擾、電壓輸出 DAC:
https://www.ti.com.cn/product/cn/DAC8560