• 创龙DSP6748的DAC例程研究


    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(3, 10);
        WriteToAD5754RViaSpi(&cstr);

    3. GPIO的配置

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

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

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

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

  • 相关阅读:
    Tomcat:基于HTTP协议的Connector配置
    Tomcat:云环境下的Tomcat设计思路——Tomcat的多实例安装
    Tomcat:基于Apache+Tomcat的集群搭建
    Java Security:keytool工具使用说明
    Java Security:Java加密框架(JCA)简要说明
    Java Security:公钥私钥、数字签名、消息摘要是什么
    Java Se:Java Security
    Tomcat源码解读:ClassLoader的设计
    Java Se:自定义ClassLoader
    Java Se: Logging 框架说明
  • 原文地址:https://www.cnblogs.com/429512065qhq/p/8496747.html
Copyright © 2020-2023  润新知