小磷光一

ADUC7020和 AD421间通信实现方式

0
阅读(3358)

  ADI公司的ADuC7020是一款性价比较高的精密模拟微控制器,其内部是一个功能强大的32bit RISC内核,采用ADuC7020可以让模块的功能得以通过软件方式来设定,或控制更为复杂的模块。在其内部集成有精密的A/D和D/A转换器以及闪存微控制器,包括有45Mbps ARM7TDMI 闪存MCU和5通路1MBPS、12位的ADC以及四个12位轨到轨电压输出DAC,此外它还集成了精密的基准电压源,62KB在电路中可重新编程的闪存程序/数据存储器,8KB SRAM,4个串行接口如UART,SPI和双I2C,比较器,可编程逻辑阵列(PLA),电源监视器(PSM),加电重置(POR)以及灵活的核时钟选择和降功耗模式,能在系统中进行串行编程和JTAG仿真。

  AD421是由Analog Devices公司生产的一款低功耗、16位的D/A转换芯片。可以用它来控制回路电流输出。下图给出的是ADuC7020与AD421之间的连接电路图。

  AD421采用三线制的数字接口,包括DATA、CLOCK、LATCH三个管脚。数模转换器在时钟CLOCK作用下,输入移位寄存器把DATA引脚上的数据逐位读入,LATCH锁存脉冲把寄存器中的数据锁存到DAC中。若在两个锁存脉冲间隔输入16个CLOCK时钟周期,就锁存16位数字信号并完成正常的电流转换。若多于16个时钟周期,只锁存最后输入的17位数据并输出报警电流信号。因此,ADuC7020可采用SPI方式与AD421进行通信。

程序清单:

#include 
void send(unsigned char a)
{   GP2DAT = GP2DAT | 0x01000000;
	GP2CLR = GP2CLR | 0x00010000;
	delay(5);
    COMTX = a;
    while(!(0x020==(COMSTA0 & 0x020)));
	delay(5);
	GP2SET = GP2SET |0x00010000;
}
void delay(unsigned int count)
{    unsigned int i;
    for(i=0;i