zoukankan      html  css  js  c++  java
  • 创龙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. 插上子板卡,烧写程序,测试,用万用表量下电压,对比串口输出的电压值换算一下。

  • 相关阅读:
    Python时间戳
    vux x-input 清除按钮不起作用
    MySQL连接查询流程源码
    Linux下用的脚本
    TableCache设置过小造成MyISAM频繁损坏 与 把table_cache适当调小mysql能更快地工作
    批量导入数据到InnoDB表速度优化
    DBA面对新mysql环境
    (进阶篇)PHP+Mysql+jQuery找回密码
    (进阶篇)PHP实现用户注册后邮箱验证,激活帐号
    (实用篇)php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
  • 原文地址:https://www.cnblogs.com/429512065qhq/p/8496747.html
Copyright © 2011-2022 走看看