zoukankan      html  css  js  c++  java
  • STM32F103RCT6驱动AD7705(cubeide)

     首先在cubeide上配置spi,使用spi1,由于正点开发板上的nr24l01与ad7705正好相同,因此根据引脚配置PA1为DRDY,PC4为CS片选


    根据手册上所写,配置寄存器初始化

    uint8_t commue(uint8_t Dst_Addr)
    {uint8_t RXdata;
      HAL_SPI_TransmitReceive(&hspi1,&Dst_Addr,&RXdata,1, 1000);
       return RXdata;
    }
    void Init_AD7705(void)
    {
       for(int i=0;i<150;i++)commue(0xff);//持续DIN高电平写操作,恢复AD7705接口
        HAL_Delay(1);
        commue(0x20); /* 选择时钟寄存器*/
        HAL_Delay(1);
        commue(0x0c); /* 配置时钟寄存器*/
        HAL_Delay(1);
        commue(0x10); /*选择设置寄存器*/
        HAL_Delay(1);
        commue(0x44);/*配置设置寄存器 */
    }

    读取通道一数据

    uint16_t GetData7705_CH1(void)
    {
        uint16_t DataL = 0,DataH = 0;
        HAL_Delay(1);
        commue(0x38);   //选中CH1数据寄存器读 
       while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1)==GPIO_PIN_SET){;}
        ////待数据准备好AdDrdy=0
        delay_us(20);
        DataH=commue(0xff);
        DataL=commue(0xff);
        delay_us(100);
        DataH = DataH << 8;
        return (DataH | DataL);
    }

    计算出电压值(mv)

    float ADC_7705(void)
    {
            Init_AD7705();
            float RCH1_16bit=GetData7705_CH1();
            return (RCH1_16bit*5049.0/65535); //算出通道1电压
    }

  • 相关阅读:
    TCP/IP三次握手四次挥手
    注解(JDK1.5之后)
    枚举(JDK1.5之后)
    局部内部类
    非静态内部类
    静态内部类
    匿名内部类
    接口
    根父类:java.lang.Object
    native关键字
  • 原文地址:https://www.cnblogs.com/SFWR-YOU/p/14706172.html
Copyright © 2011-2022 走看看