看了一个DA的例程,例程里并没有指定DA的输出端口,但是给定了地址。板子上连接到DA芯片输出引脚的插针有DA输出。这是什么原理。是因为数据总线直接访问这个地址,把数据发送到DA芯片的吗?求解.#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
#include <math.h>
void InitXintf(void);
#define DA_CHA *(Uint16 *)0x4100
#define DA_CHB *(Uint16 *)0x4102
#define DA_CHC *(Uint16 *)0x4104
#define DA_CHD *(Uint16 *)0x4106
#define DA_TRANS *(Uint16 *)0x47ff
void main(void)
{
Uint16 CHA_DATA = 0;
Uint16 CHB_DATA = 0;
Uint16 CHC_DATA = 0;
Uint16 CHD_DATA = 0;
Uint16 flagA = 0;
InitSysCtrl();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
InitXintf();
while(1)
{ DA_TRANS = 1;
if(flagA)
{
CHA_DATA -= 100;
if(CHA_DATA == 0)
{
flagA = 0;
}
}
else
{
CHA_DATA += 100;
if(CHA_DATA == 4000)
{
flagA = 1;
}
}
if(flagA)
CHB_DATA = 0;
else
CHB_DATA = 4000;
if(CHC_DATA == 4000)
CHC_DATA = 0;
else
CHC_DATA += 100;
CHD_DATA = 2047 * sin((float)(2 * 3.14 * (float)CHC_DATA / 4000.0)) + 2048;
DA_CHA = CHA_DATA;//三角波
DA_CHB = CHB_DATA;//方波
DA_CHC = CHC_DATA;//锯齿波
DA_CHD = CHD_DATA;//正弦波
DA_TRANS = 0;
DELAY_US(10);
}
}
|