OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2984|回复: 4

片外ADC驱动程序

[复制链接]

2

主题

8

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2018-10-18
在线时间
3 小时
发表于 2019-1-25 09:13:34 | 显示全部楼层 |阅读模式
写了一个驱动TLV1544的ADC驱动程序,但在主函数中调用TLV1544.c函数时,没有采集到输入的电压值,TLV1544.c函数如下,有大佬能看下是不是写的有啥不对的吗,非常感谢




#include "TLV1544.h"
#include "usart.h"
#include "delay.h"


void TLV1544_GPIO_Init(void)
{

        GPIO_InitTypeDef  GPIO_InitStructure;
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//ê1ÄüGPIOAê±Öó

  //Ïè3õê¼»ˉADC1í¨μà5 IO¿ú
  GPIO_InitStructure.GPIO_Pin = CS;//PA4
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//Ä£Äaêä3ö
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin = SCLK;//PA5
        GPIO_Init(GPIOA, &GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin = DIN;//PA6
        GPIO_Init(GPIOA, &GPIO_InitStructure);
       
//        GPIO_InitStructure.GPIO_Pin = DRDY;//PA5
//        GPIO_Init(GPIOA, &GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin = DOUT;//PA7
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//Ä£Äaêäèë
        GPIO_Init(GPIOA, &GPIO_InitStructure);
       
}

int        set_TLV1544_mode(u16 channel)//éèÖÃTLV1544×a»»Ä£ê½
{
        u16 i;
//        uint8_t bit;
        channel=channel<<4;
        TLV1544_CS_L();  //0
        delay_ms(5);
        TLV1544_SCLK_L();  //0
        delay_ms(5);
       
        for(i=0;i<10;i++)
        {
                if(channel&0x80)
                {
                        TLV1544_DIN_L();
                }
                else
                        TLV1544_DIN_H();
                __NOP();
               
                TLV1544_SCLK_L();
                TLV1544_SCLK_H();
                channel=channel<<1;
        }
        TLV1544_CS_H();
}

int TLV1544_tra(void) // ADC3&#245;ê&#188;&#187;ˉoˉêy£&#172;êy&#190;Y&#206;a10&#206;&#187;
{
        u16 x=0,i;
        int adc_value=0;
        set_TLV1544_mode(1);//éè&#214;&#195;TLV1544×a&#187;&#187;&#196;£ê&#189;
        delay_ms(60);

        TLV1544_CS_L();
        __NOP();
        __NOP();     //3&#245;ê&#188;&#187;ˉ&#198;&#172;&#209;&#161;
        TLV1544_SCLK_L();//ê±&#214;óà-μí
        __NOP();
        __NOP();
       
       
       
        for(i=0;i<10;i++)
        {
                TLV1544_SCLK_H();
          __NOP();
                x=GPIO_ReadInputDataBit(GPIOA,DOUT);

                adc_value|=x;
                adc_value<<=1;
               
                TLV1544_SCLK_L();
                __NOP();
          __NOP();
               
        }
//        adc_value>>=1;
        TLV1544_CS_H();     //1

        if(adc_value >= 512)
                adc_value=0;
        //printf("---%d---\n",adc_value);
        return  adc_value;
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2018-10-18
在线时间
3 小时
 楼主| 发表于 2019-1-25 09:16:53 | 显示全部楼层
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2018-10-18
在线时间
3 小时
 楼主| 发表于 2019-1-25 09:17:19 | 显示全部楼层

#include "stm32f4xx.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "lcd.h"
#include "TLV1544.h"
#include "adc.h"

//ALIENTEK ì&#189;&#203;÷&#213;&#223;STM32F407&#191;a·¢°&#229; êμ&#209;é0
//STM32F41¤3ì&#196;£°&#229;-&#191;aoˉêy°&#230;±&#190;
//&#188;&#188;ê&#245;&#214;§3&#214;£owww.openedv.com
//ì&#212;±|μê&#198;ì£ohttp://eboard.taobao.com
//1&#227;&#214;YêDD&#199;òíμ&#231;×ó&#191;&#198;&#188;&#188;óD&#207;T1&#171;&#203;&#190;  
//×÷&#213;&#223;£o&#213;yμ&#227;&#212;-×ó @ALIENTEK

int main(void)
{
                u16 ad_value=0;
                float temp;
                NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éè&#214;&#195;&#207;μí3&#214;D&#182;&#207;ó&#197;&#207;è&#188;&#182;·&#214;×é2
                delay_init(168);    //3&#245;ê&#188;&#187;ˉ&#209;óê±oˉêy
                uart_init(115200);        //3&#245;ê&#188;&#187;ˉ′&#174;&#191;ú2¨ì&#216;&#194;ê&#206;a115200
                LED_Init();                                        //3&#245;ê&#188;&#187;ˉLED
                LCD_Init();         //3&#245;ê&#188;&#187;ˉLCD&#189;ó&#191;ú
                TLV1544_GPIO_Init();//′&#174;&#191;ú3&#245;ê&#188;&#187;ˉ
                TLV1544_tra();  // TLV1544×a&#187;&#187;oˉêy
                set_TLV1544_mode(1);
                Adc_Init();         //3&#245;ê&#188;&#187;ˉADC
       
       
                POINT_COLOR=RED; //&#187;-±ê&#209;&#213;é&#171;
                LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");        //·&#214;±e&#182;&#212;ó|xy&#198;eμ&#227;×&#248;±ê£&#172;&#191;í&#182;è£&#172;&#184;&#223;&#182;è£&#172;×&#214;ì&#229;′óD&#161;£&#172;&#207;&#212;ê&#190;μ&#196;&#214;μ
                LCD_ShowString(30,70,200,16,16,"aaaa");       
                LCD_ShowString(30,110,200,16,16,"9406");
               
                LCD_ShowString(30,130,200,16,16,"ADC1_CH5_VAL:");             
                LCD_ShowString(30,150,200,16,16,"ADC1_CH5_VOL:0.000V");        //&#207;è&#212;ú1ì&#182;¨&#206;&#187;&#214;&#195;&#207;&#212;ê
                while(1)
                {
                set_TLV1544_mode(1);
                ad_value=TLV1544_tra();
//                        ad_value=2;
                LCD_ShowxNum(134,130,ad_value,4,16,0);    //&#207;&#212;ê&#190;ADCC2é&#209;ùoóμ&#196;&#212;-ê&#188;&#214;μ  xy×&#248;±ê£&#172;êy&#214;μ£&#172;3¤&#182;è£&#172;×&#214;ì&#229;′óD&#161;£&#172;&#196;£ê&#189;
                temp=(float)ad_value*3300/1024;
                ad_value=temp;                            //&#184;3&#214;μ&#213;&#251;êy2&#191;·&#214;&#184;&#248;adcx±&#228;á&#191;£&#172;òò&#206;aadcx&#206;au16&#213;&#251;D&#206;
                LCD_ShowxNum(134,150,ad_value,1,16,0);    //&#207;&#212;ê&#190;μ&#231;&#209;1&#214;μμ&#196;&#213;&#251;êy2&#191;·&#214;£&#172;3.1111μ&#196;&#187;°£&#172;&#213;aà&#239;&#190;íê&#199;&#207;&#212;ê&#190;3
                temp-=ad_value;                           //°&#209;ò&#209;&#190;-&#207;&#212;ê&#190;μ&#196;&#213;&#251;êy2&#191;·&#214;è¥μ&#244;£&#172;á&#244;&#207;&#194;D&#161;êy2&#191;·&#214;£&#172;±èè&#231;3.1111-3=0.1111
                temp*=1000;                           //D&#161;êy2&#191;·&#214;3&#203;ò&#212;1000£&#172;àyè&#231;£o0.1111&#190;í×a&#187;&#187;&#206;a111.1£&#172;&#207;àμ±óú±£á&#244;èy&#206;&#187;D&#161;êy&#161;£
                LCD_ShowxNum(150,150,temp,3,16,0X80); //&#207;&#212;ê&#190;D&#161;êy2&#191;·&#214;£¨&#199;°&#195;&#230;×a&#187;&#187;&#206;aá&#203;&#213;&#251;D&#206;&#207;&#212;ê&#190;£&#169;£&#172;&#213;aà&#239;&#207;&#212;ê&#190;μ&#196;&#190;íê&#199;111.
                LED0=!LED0;
                delay_ms(250);       
                        LED1=!LED1;
                delay_ms(500);
               
               
//        ad_valu=9.5*ad_v;
//        LCD_ShowString(30,50,200,16,16,ad_v);
        }

}
回复 支持 反对

使用道具 举报

0

主题

168

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
286
金钱
286
注册时间
2018-12-31
在线时间
12 小时
发表于 2019-1-25 10:10:50 | 显示全部楼层
原来是这样啊!
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2018-10-18
在线时间
3 小时
 楼主| 发表于 2019-1-25 15:10:28 | 显示全部楼层

什么意思,实际采电压的时候没有反应。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 14:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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