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

  • 相关阅读:
    前端错误监控上报公共方法,可在父页面及iframe子页面同时使用
    python3.7爬取墨菲定律保存在本地txt
    实现一个左滑删除功能
    用docsify快速构建文档,并用GitHub Pages展示
    最常用的快捷键总结
    有价值的帖子或博客链接
    解决8080端口占用问题
    用gulp构建你的前端项目
    移动端右侧栏导航面板
    自己封装一个弹框插件
  • 原文地址:https://www.cnblogs.com/429512065qhq/p/8496747.html
Copyright © 2011-2022 走看看