查看: 1109|回复: 0

NXPS08P+DAC输出

[复制链接]
  • TA的每日心情
    开心
    2019-10-17 08:07
  • 签到天数: 273 天

    [LV.8]以坛为家I

    74

    主题

    2338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    7350
    最后登录
    2021-8-30
    发表于 2019-7-25 13:37:47 | 显示全部楼层 |阅读模式
    本帖最后由 anny 于 2019-7-25 13:55 编辑

    S08P芯片没有DAC功能,但是板子上外挂了一个8位的DAC芯片DAC5571,S08P芯片通过IIC与DAC5571通讯。本次实现功能是S08P通过与DAC5571芯片输出电压,然后用S08P芯片的ADC读取出来。

    官方已经有了各种测试例程,只要作删减保留自己所要的就能实现功能了。

    1、首先还是各种初始化:
        Sys_Init();
        EnableInterrupts;

        printf("\n-- S08-LITE DAC输出实现 --\n");
        printf("\n");

        //Initialize MTIM0, 625Hz interrupt interval, used for toggle LED
        MTIM0_Init();
        MTIM0_Start();   

        //Initialize MTIM1, 1ms interrupt interval, used for 1ms time delay
        MTIM1_Init();

        //Initialize GPIO used for LED
        LED_Init();

        //Initialize ADC, 12bit mode
        ADC_Init();

        //Initialize I2C PTA2/3 used for DAC5571 write/read
        DAC5571_Init();

    2、本次实验的程序:
            void DAC5571WriteData(unsigned char u8Data)
            {
                    /* send data to slave */
                    IIC_StartTransmission(DAC5571_I2C_ADDRESS, MWSR);
                    i2c_Wait();
            
                    /* Send I2C address */
                    I2C_D = u8Data>>4;
                    i2c_Wait();
            
                    /* Send data */
                    I2C_D = u8Data<<4;
                    i2c_Wait();
            
                    i2c_Stop();
            
                    delay();
            }
            
            void DAC5571_Test(void)
            {
                    unsigned short uiADC_Value;
                    unsigned long uiADC_Value_temp;
            
                    unsigned char i;
                    unsigned char dacOutputValue;
                    unsigned char dacOutputValueMin, dacOutputValueMax;
                    uint8_t temp;
            
                    //initialize adc channel to measure the dac output
                    if (DAC5571_ADC_CHANNEL<8)
                    {
                            temp = ADC_APCTL1;
                            temp |= (1<<DAC5571_ADC_CHANNEL);
                            ADC_APCTL1 = temp;
               }
               else
               {
                            temp = ADC_APCTL2;
                            temp |= (1<<(DAC5571_ADC_CHANNEL-8));
                            ADC_APCTL2 = temp;
                    }
            
                    printf("DAC5571 test: BEGINS\n");
            
                    while(1)
                    {
                            for(dacOutputValue=0; dacOutputValue<255; dacOutputValue++)
                            {
                                    DAC5571WriteData(dacOutputValue);
                                    DelayMS(1000);
                   
                                    uiADC_Value = ADC_GetResult(DAC5571_ADC_CHANNEL);
                   
                                    for (i=0; i<10; i++)
                                    {
                                            uiADC_Value_temp = ADC_GetResult(DAC5571_ADC_CHANNEL);
                   
                                            uiADC_Value_temp += uiADC_Value;
                   
                                            uiADC_Value = (unsigned short)(uiADC_Value_temp/2);
                                    }
                   
                                    //8-bit DAC, 12-bit ADC, so the mapping ratio = 4096/256 = 16
                                    uiADC_Value = uiADC_Value /16;
                                    printf ("输出电压 :  %d\n", dacOutputValue);
                                    printf ("检测电压 :  %d\n", uiADC_Value);     
                            }            
                    }
            }


    3、实验结果:

    TIM截图20190725133457.png

    1[{EH[R[~W2KBQ)B5K9DZBF.png

    专用芯片的DAC输出还是很准的!附上点资料,来自于网络

    DAC5571 使用心得.rar (398.93 KB, 下载次数: 5)
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-26 14:46 , Processed in 0.102140 second(s), 19 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表