|
本帖最后由 sunduoze 于 2015-9-7 21:59 编辑
电设之F5529(1)UCS
电设之F5529(2)OLED(外设)
电设之F5529(3)SPI
电设之F5529(4)定时器
电设之F5529(5)KEY(外设)
电设之F5529(6)ADS1118(外设)
电设之F5529(7)DAC7512(外设)
电设之F5529(8)RTC & DS18B20(外设)
电设之F5529(9)其他(小闹钟、电赛模拟题、电赛作品)
电设之F5529——我的核心系统板
最近家里事多,没空发,今天抽空把剩余的代码发了吧!今天带来DAC7512 12位ADC SPI通信,多的也不说了
- 功能:DAC7512 12位单通道DAC SPI
- 说明;使用DAC,可以免去了PWM模拟电压的纹波处理
- 今年电赛双向DC/DC电源中用了这个模块,实现恒流
复制代码
直接上一下代码
- /*
- * DAC7512.h
- *
- * Created on: 2015年7月21日
- * Author: Clover
- */
- #ifndef DAC7512_H_
- #define DAC7512_H_
- #include <msp430.h>
- #define SYNC_H_DAC7512 P6OUT |= BIT5//~SYNC
- #define SYNC_L_DAC7512 P6OUT &= ~BIT5
- uint8_t i = 0;//千万别改成short
- //void DAC7512_Config(uint16_t D_Config)
- //{
- // uint16_t Value[] ={0,0};
- // Value[0] = D_Config;
- // Value[1] = Value[0];
- //
- // P6DIR|=BIT5;//SYNC的方向寄存器 以便后续控制其输出寄存器
- //
- // SYNC_L_DAC7512;
- // while(UCA0STAT&UCBUSY);
- // while (!(UCA0IFG&UCTXIFG));
- // UCA0TXBUF = Value[(i)%2]>>8; // Send next value
- // UCA0TXBUF = Value[(i++)%2];
- // while (!(UCA0IFG&UCTXIFG));
- // delay_us(1);
- // SYNC_H_DAC7512;//起始信号
- // delay_us(1);
- //}
- void DAC7512_Config(uint16_t D_Config)
- {
- uint16_t Value[] ={0,0};
- Value[0] = D_Config;
- Value[1] = Value[0];
- P6DIR|=BIT5;//SYNC的方向寄存器 以便后续控制其输出寄存器
- SYNC_L_DAC7512;
- while(UCB0STAT&UCBUSY);
- while (!(UCB0IFG&UCTXIFG));
- UCB0TXBUF = Value[(i)%2]>>8; // Send next value
- UCB0TXBUF = Value[(i++)%2];
- while (!(UCB0IFG&UCTXIFG));
- delay_us(1);
- SYNC_H_DAC7512;//起始信号
- delay_us(1);
- }
- #endif /* DAC7512_H_ */
复制代码 [url=]电设之F5529(7)DAC7512( ...[/url]
再上一份自己翻译了部分的手册(手册中又模拟正弦波的参数)[url=]DAC7512.pdf[/url]
还有之前做正弦波的数据
[url=]DAC正弦曲线.rar[/url]
|
|