*/105 数据传输过程 首先器件必须使能CS。 然后在FS的下降沿启动数据的移位,在SCLK的下降沿一位接一位地传入内部寄存器。 在16位已传送后或者当FS升高时,移位寄存器中的内容被移到DAC锁存器,它将输出电压更新为新的电平。 */105 TLV5616的串行接口可以用于两种基本的方式: 4线(带片选) 3线(不带片选) 4、数据格式 TLV5616的16位数据字包括两部分: 控制位 D15-D12 DAC新值 D11-D0 */105 X:任意值 SPD:速度控制位 1→快速方式 0→慢速方式 PWR:功率控制位 1→掉电方式 0→正常工作 注:在掉电方式时,TLV5616中的所有放大器都被禁止。 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 X SPD PWR X DAC新值 */105 4、TLV5616与单片机的接口电路及应用编程 TLV5616与单片机的接口连接相对简单,注意应在VDD和AGND之间应当连接一个0.1μF的陶瓷旁路电容,且应当用短引线安装在尽可能靠近器件的地。 使用缺氧体环(ferrite beads)可以进一步隔离系统模拟电源与数字电源。 */105 【例9-4】使用STC15F2K60S2控制TLV5616输出正弦波。 解:TLV5616与STC15F2K60S2接口的电路图如图所示。 图9-13 TLV5616与单片机的接口电路图 */105 串行的DAC输入数据和外部控制信号由单片机的P3口完成:串行数据由RxD引脚送出,串行时钟由TxD引脚送出。P3.4和P3.5分别向TLV5616提供片选和帧同步信号。 使用定时器以固定的频率产生中断。在中断服务子程序中提取和写入下一个数据样本(两个字节)到DAC中。数据样本储存在常数表格中,描述了一个正弦波的全周期。 */105 单片机的串行口工作于方式0,在RxD脚发送8位数据,同时TxD脚上送出同步时钟。需要连续两次写入才能写一个完整的字到TLV5616。 输出DAC的数据是正弦波数据,一个周期的32个正弦波数据(双字节数)保存在SINEVALS为首地址的单元中(共64个字节)。 */105 汇编语言程序代码如下: ROLL_PTR EQU 30H ORG 0000H LJMP START ORG 000BH LJMP INT_T0 ORG 0100H START: MOV SP,#0F0H MOV DPTR,# SINEVALS ;设置数据常数表格的首地址 CLR A MOV SCON,A ;设置串口1工作与模式0 MOV TMOD,#02H ;设置定时器0工作方式2 MOV TH0,#0C8H SETB T1 ;置FS = 1 SETB T0 ;置= 1 SETB ET0 ;允许定时器0中断 SETB EA ;允许CPU中断 MOV ROLL_PTR,A ;循环计数清“0” SETB TR0 ;启动定时器0 SJMP $ */105 ;定时器0中断服务程序 INT_T0: PUSH PSW PUSH ACC CLR T0 ;将CS置为低电平 CLR T1 ;将FS置为低电平 MOV A, ROLL_PTR ;将循环计数装入累加器A MOVC A,@A+DPTR ;从数据表格中读取高位字节 ORL A, #00H ;设置控制位 MOV SBUF,A ;送出高位字节 MOV A, ROLL_PTR ;将循环计数装入累加器A INC A MOVC A,@A+DPTR ;读取低位字节 */105 ;正弦常数表格 SINEVALS: DW 01000H DW 0903EH DW 05097H DW 0305CH DW 0B086H DW 070CAH DW 0F0E0H DW 0F06EH DW 0F039H DW 0F06EH DW 0F0E0H DW 070CAH DW 0B086H DW 0305CH DW 05097H DW 0903EH DW 01000H DW 06021H DW 0A0E8H DW 0C063H DW 040F9H DW 080B5H DW 0009FH DW 00051H DW 00026H DW 00051H DW 0009FH DW 080B5H DW 040F9H DW 0C063H DW 0A0E8H DW 06021H END */105 选择ADC通道(设置ADC_CONTR中的CHS2~CHS0)。 根据需要设置转换结果存储格式(设置CLK_DIV中的ADRJ位)。 查询A/
原创力文档

文档评论(0)