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

  • 相关阅读:
    android之手机震动Vibrate
    Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现) .
    用AutoCompleteTextView实现历史记录提示
    AutoCompleteTextView
    android学习笔记7--------MVC设计模式
    Android之MVC模式
    Android中常见的MVC模式
    //11个整数的手机号码正则式 phoneNumber(String number)
    YuvImage知识点总结
    运行项目的时候出现missing frature:WATCH
  • 原文地址:https://www.cnblogs.com/429512065qhq/p/8496747.html
Copyright © 2011-2022 走看看