打印

基于STM32的ADS8341驱动程序

[复制链接]
2106|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
dirtwillfly| | 2014-10-9 17:11 | 只看该作者
这问题让人没法回答。
一般来说,要根据你的电路图和ADS8341datasheet上提供的通讯时序进行编写

使用特权

评论回复
板凳
睡着思考|  楼主 | 2014-10-11 16:07 | 只看该作者

求高手解惑 不胜感激。

本帖最后由 睡着思考 于 2014-10-11 16:10 编辑

/***********************************************************/
/*                                                                                                                   */
/*                                        ADS8341操作函数                                                   */
/*                                                                                                                   */
/***********************************************************/
#define                ADPORT                GPIOB
//#define                ADReset                GPIO_Pin_3
#define                DClk                GPIO_Pin_8   
#define                Dout                GPIO_Pin_10
#define                Din                        GPIO_Pin_9
//#define                DRTY                GPIO_Pin_7
#define         DClk0()            GPIO_ResetBits(GPIOB,DClk)
#define         DClk1()            GPIO_SetBits  (GPIOB,DClk)
#define         Din0()             GPIO_ResetBits(GPIOB,Din)
#define         Din1()             GPIO_SetBits  (GPIOB,Din)

extern void delay_nus(unsigned long n);
extern void delay_nms(unsigned long n);

void WriteByte8341(unsigned char x)
{
        unsigned char i;
        delay_nus(50);
        DClk1();
        delay_nus(100);
        for (i=0; i<8; i++)
        {
                Din0();
                DClk0();
                delay_nus(10);
                if( (x & 0x94) )
                {
                        Din1();        
                        delay_nus(100);
                }
                else
                {
                        Din0();
                        delay_nus(100);
                }
//                AdDin =(bit) (x & 0x80);

                DClk1();
                delay_nus(100);
                x <<=1;
        }

        Din0();
        delay_nus(1000);
}

unsigned int ReadWord8341(void)
{
        unsigned char i;
        unsigned int x=0 ;
        delay_nus(100);
        DClk1();
        delay_nus(100);
    for (i = 0 ; i < 16 ; i++)
        {
                DClk0();
                x<<=1;
                if(GPIO_ReadInputDataBit(GPIOB,Dout))
                {
                         x |= 0x01;
                }
                else
                {;;}
                delay_nus(100);
                DClk1();
                delay_nus(100);
        }
        return x;
}

void Reset8341(void)
{        
        unsigned char i;
//        GPIO_ResetBits(ADPORT,ADReset);
//        delay_nms(10);
        GPIO_SetBits  (ADPORT,Dout);
        delay_nms(300);
        for(i=0;i<35;i++)         
        {
                DClk0();
                delay_nus(10);
                Din1();
                delay_nus(90);
                DClk1();
                delay_nus(100);
        }
        Din1();;;
        delay_nus(50);
}

void Init8341()                        //第一个端口初始化
{
        Reset8341();
        delay_nus(100);
        WriteByte8341(0x94);//选择操作时钟寄存器
//        delay_nus(100);                     
//        WriteByte8341(0x04);
//        delay_nus(100);
//        WriteByte8341(0x10);
//        delay_nus(100);
//        WriteByte8341(0x44);
//        delay_nus(100);
}         

//void Init8341_2()            //第二个端口初始化
//{
//        Reset8341();
//        WriteByte8341(0x21);//选择操作时钟寄存器                     
//        WriteByte8341(0x04);
//        WriteByte8341(0x11);
//        WriteByte8341(0x44);
//}         

unsigned int GetData8341()        //读取第一个通道
{
        WriteByte8341(0x94);
        return ( ReadWord8341() );
}

//unsigned int GetData8341_2() //读取第二个通道
//{
//        WriteByte8341(0x39);
//        return ( ReadWord8341() );
//}

///在主函数中只用了下面连个函数

Init8341();                                                //初始化ADS8341通道1
delay_nms(10);
Voltage =         GetData8341();   


求高手解惑 不胜感激。

ADS8341_3.jpg (112.22 KB )

ADS8341_3.jpg

ADS8341_2 .jpg (149.97 KB )

ADS8341_2 .jpg

ADS8341_1 .jpg (97.41 KB )

ADS8341_1 .jpg

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

4

帖子

0

粉丝