- MSP430F5529 LaunchPad
- DAC8550模块--16位低功耗数模转换器
- 7V-12V直流电源
- 2.5V参考电压
本文采用TI官方CCS 12.4编译运行。
输出电压计算公式如下:
*************************************************DAC8550.h************************************************
/*
* DAC8550.h
*
* Created on: Jul 13, 2023
* Author: 凌晨被窝点灯
*/
#ifndef DAC8550_H_
#define DAC8550_H_
#include <msp430.h>
/*配置SYNC*/
#define Init_SYNC (P7DIR |= BIT4)
#define SYNC_H (P7OUT |= BIT4)
#define SYNC_L (P7OUT &= ~BIT4)
/*配置SCLK*/
#define Init_SCLK (P2DIR |= BIT2)
#define SCLK_H (P2OUT |= BIT2)
#define SCLK_L (P2OUT &= ~BIT2)
/*配置DIN*/
#define Init_DIN (P2DIR |= BIT0)
#define DIN_H (P2OUT |= BIT0)
#define DIN_L (P2OUT &= ~BIT0)
#endif /* DAC8550_H_ */
*************************************************main.c******************************************************
#include <msp430.h>
#include <DAC8550.h>
#include <stdint.h>
// date的范围从–32768 到 32767对应输出0到5V
void Voltage_Output(uint16_t data)
{
uint8_t mode = 0x00;
uint8_t i,mode_bit;
uint16_t data_in;
SYNC_L;
__delay_cycles(4000);
for(i=0;i<8;i++)
{
SCLK_H;
mode_bit = (mode & 0x80);
if(0x80 == mode_bit)
{
DIN_H;
}
else
{
DIN_L;
}
mode = (mode<<1);
__delay_cycles(1000);
SCLK_L;
__delay_cycles(4000);
}
for(i=0;i<16;i++)
{
SCLK_H;
data_in = (data & 0x8000);
if(0x8000 == data_in)
{
DIN_H;
}
else
{
DIN_L;
}
data = (data<<1);
__delay_cycles(1000);
SCLK_L;
__delay_cycles(4000);
}
SYNC_H;
}
/**
* main.c
*/
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
Init_SYNC;
Init_SCLK;
Init_DIN;
SYNC_H;
Voltage_Output(32767);
}
附件1:DAC8550官方数据表