H文件
#ifndef _DAC7811_H_
#define _DAC7811_H_
#include "Header.h"
//Define SCLK
#define DA_SCLK_PERIPH SYSCTL_PERIPH_GPIOC
#define DA_SCLK_PORT GPIO_PORTC_BASE
#define DA_SCLK_PIN GPIO_PIN_4
//Define SDIN
#define DA_SDIN_PERIPH SYSCTL_PERIPH_GPIOC
#define DA_SDIN_PORT GPIO_PORTC_BASE
#define DA_SDIN_PIN GPIO_PIN_5
//Define SYNC
#define DA_SYNC_PERIPH SYSCTL_PERIPH_GPIOC
#define DA_SYNC_PORT GPIO_PORTC_BASE
#define DA_SYNC_PIN GPIO_PIN_6
//Define SDO
#define DA_SDO_PERIPH SYSCTL_PERIPH_GPIOC
#define DA_SDO_PORT GPIO_PORTC_BASE
#define DA_SDO_PIN GPIO_PIN_7
/*********************************Define again*************************************/
#define SCLK_UP GPIOPinWrite(DA_SCLK_PORT,DA_SCLK_PIN,1<<4)
#define SCLK_DOWN GPIOPinWrite(DA_SCLK_PORT,DA_SCLK_PIN,0X00)
#define SDIN_UP GPIOPinWrite(DA_SDIN_PORT,DA_SDIN_PIN,1<<5)
#define SDIN_DOWN GPIOPinWrite(DA_SDIN_PORT,DA_SDIN_PIN,0X00)
#define SYNC_UP GPIOPinWrite(DA_SYNC_PORT,DA_SYNC_PIN,1<<6)
#define SYNC_DOWN GPIOPinWrite(DA_SYNC_PORT,DA_SYNC_PIN,0X00)
//Foward 4-bit control
extern unsigned char DA_ON[4];
//Init the DAC7811
extern void dacInit(void);
////Write the data to DAC7811
extern void dacWrite(unsigned int daData);
#endif
C文件
#include "dac7811.h"
#include "systemInit.h"
unsigned char DA_ON[4] ={0,0,0,1};
//Enable the DAC7811's pins
void dacInit()
{
SysCtlPeriEnable(SYSCTL_PERIPH_GPIOC);
GPIOPinTypeOut(GPIO_PORTC_BASE,DA_SCLK_PIN|DA_SDIN_PIN|DA_SYNC_PIN);
SYNC_DOWN;
SDIN_UP;
SCLK_DOWN;
}
//Write the data to DAC7811
void dacWrite(unsigned int daData)
{
SYNC_DOWN;
SCLK_UP;
for(unsigned char i=0;i<4;i++)
{
SCLK_UP;
if(DA_ON[i])
{
SDIN_UP;
}
else
SDIN_DOWN;
SCLK_DOWN;
}
for(unsigned char i=0;i<12;i++)
if(daData&0x800)
daData<<=1;
SDIN_UP;
SYNC_UP;
SysCtlDelay(1*(TheSysClock/3000));