1. 创龙DSP6748开发板驱动TL5724这个DAC,输出指定的电压值,此程序是使用 IO 口模拟 SPI 实现与 TL5724 模块的数据交互。

2. 首先是初始化PSC函数

void PSCInit(void)
{// 使能 GPIO 模块
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
}

2. DAC的读写函数

    // 管脚复用配置
GPIOBankPinMuxSet();
ConfigAD5754R();
// 输出电压配置
cstr = DAC_Register | DAC_Channel_A | DACOut(, );
WriteToAD5754RViaSpi(&cstr);

3. GPIO的配置

    HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX()) = (0x80000000);
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX()) = (0x00880800);
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX()) = (0x00000080); // 配置管脚为输出状态
GPIODirModeSet(SOC_GPIO_0_REGS, , GPIO_DIR_OUTPUT); // GPIO6[2]
GPIODirModeSet(SOC_GPIO_0_REGS, , GPIO_DIR_OUTPUT); // GPIO6[7]
GPIODirModeSet(SOC_GPIO_0_REGS, , GPIO_DIR_OUTPUT); // GPIO2[10]
GPIODirModeSet(SOC_GPIO_0_REGS, , GPIO_DIR_INPUT); // GPIO2[11]
GPIODirModeSet(SOC_GPIO_0_REGS, , GPIO_DIR_OUTPUT); // GPIO2[13] // LDAC
GPIOPinWrite(SOC_GPIO_0_REGS, , GPIO_PIN_LOW); // LDAC
GPIOPinWrite(SOC_GPIO_0_REGS, , GPIO_PIN_LOW); // CLK
GPIOPinWrite(SOC_GPIO_0_REGS, , GPIO_PIN_HIGH); // SDIN
GPIOPinWrite(SOC_GPIO_0_REGS, , GPIO_PIN_HIGH); // SYNC

4. 其实读写都是模拟的GPIO而已

void WriteToAD5754RViaSpi(int *RegisterData)
{
int ValueToWrite = *RegisterData;
int i;
// SPI start
SET_SYNC();
delay();
CLR_SYNC(); // bring CS low
delay();
// Write out the ControlWord
for(i = ; i < ; i++)
{
SET_SCLK();
delay(); if(0x800000 == (ValueToWrite & 0x800000))
{
SET_SDIN(); //Send one to SDI pin
}
else
{
CLR_SDIN(); //Send zero to SDI pin
}
delay();
CLR_SCLK();
delay();
ValueToWrite <<= ; //Rotate data
delay();
}
// SPI ends
SET_SYNC();
delay();
}

5. 插上子板卡,烧写程序,测试,用万用表量下电压,对比串口输出的电压值换算一下。

05-11 19:57