一、硬件介绍
1.1 芯片内部框架图
1.2 CBM12S085引脚定义
引脚介绍
!(DAC SYNC) | 电平触发控制输入(低电平有效) |
SCLK | 时钟输入 |
DAC DIN | 串行数据输入 |
VOUTA-H则是对应的8个电压模拟输出通道。
二、软件实现
2.1连续写操作时序图
2.2 cbm128s085.h头文件
#define DAC_SCLK_PIN GPIO_Pin_4
#define DAC_DIN_PIN GPIO_Pin_5
#define DAC_SYNC_PIN GPIO_Pin_6
#define DAC_PORT GPIOF #define DAC_CBM128_CS PFout(6)
#define DAC_CBM128_CLK PFout(4)
#define DAC_CBM128_DATA PFout(5)
/*8个通道,VREF参考电压由外部输入Vout = Vref * (D/N)D:输入数字信号 由串行接口写入内部DAC寄存器N:12位 4096.
*/
//ABCD通道采用VREF1参考电压
#define Channel_A 0
#define Channel_B 1
#define Channel_C 2
#define Channel_D 3
//EFGH通道采用VREF2参考电压
#define Channel_E 4
#define Channel_F 5
#define Channel_G 6
#define Channel_H 7
2.3 cbm128s085 初始化
void DAC_CBM128S085_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = DAC_SYNC_PIN | DAC_SCLK_PIN | DAC_DIN_PIN;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType=GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; GPIO_Init(DAC_PORT,&GPIO_InitStructure);/*CBM128S085/CBM108S085 内部同时含有上电复位和断电复位电路*//*模式选择*/CBM_WriteControlModeSelect(WTM);}
2.4 DAC 写字节
/********************************************************************************************
函数名:CBM_WriteByte
功能 :写入一个字节数据
参数 :一个字节数据
返回值:无
*********************************************************************************************/
void CBM_WriteByte(u8 txd)
{u8 t;u16 d;for(t=0;t<8;t++){ //CLK下降沿发送数据DAC_CBM128_CLK = 1; DAC_CBM128_DATA = (txd&0x80)>>7; //先发送数据最高位 txd<<=1; //txd = txd<<1;DAC_CBM128_CLK = 0; for(d=1;d>0;d--); //延迟}
}