找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2372|回复: 0
收起左侧

STM32 ADS7886源程序

[复制链接]
ID:357121 发表于 2018-6-23 11:12 | 显示全部楼层 |阅读模式
ADS7886的源程序,可直接用

单片机源程序如下:
  1. #include "ads7886.h"
  2. #include "delay.h"

  3. /*
  4. 函数功能:ADS7886驱动程序
  5. 制作人:王博文
  6. 版本 1.0
  7. ADS7886芯片介绍:
  8. 1、采用模拟SPI时序实现通信
  9. 2、信号前4位为0,无实际意义
  10. 3、芯片供电电压为2.35-5.25V
  11. 4、各引脚定义
  12. (1)VDD:电源引脚
  13. (2)GND:模拟地
  14. (3)VIN:信号输入端
  15. (4)SCLK:时钟输入端
  16. (5)SDO:串口信号输出端
  17. (6)CS:片选信号,下降沿触发
  18. */


  19. //端口初始化
  20. void ADS7886_Init(void)
  21. {
  22.   RCC->APB2ENR|=1<<6;                //使能GPIOE时钟
  23.         GPIOE->CRL&=0XFFF000FF;            //清空PE2,PE3,PE4端口之前的设置
  24.         GPIOE->CRL|=0X00082200;            //设置PE2,PE3端口为推挽输出
  25. //GPIOE->CRL|=0X00000000;            //设置PE4端口为模拟输入
  26.         GPIOE->ODR=8<<4;                   //设置模式为下拉

  27. }

  28. //ADS7886读电压程序
  29. u16 Adc_Read_Init()
  30. {
  31.         u16 data;
  32.         u8 i;
  33.         CS=1;                             //片选信号拉高,准备发送信号
  34.         SCLK=1;                           //时钟信号拉高
  35. //        delay_us(1);                    //延时
  36.         CS=0;                            //片选拉低,准备读数据
  37.         for(i=0;i<16;i++)                 //时序最好对照datasheet来看
  38.         {
  39.                
  40.                 SCLK=1;                         //时钟拉高
  41.                 data<<=1;                                    //移位
  42.                 delay_us(1);
  43.                 if(SDO==0)                      //判断数据线数据
  44.                 data&=0xfffe;
  45.                 if(SDO==1)
  46.                 data|=0x0001;
  47.                 SCLK=0;                         //时钟拉低
  48.           delay_us(1);                    //延时
  49.         }
  50.           
  51. //        for(i=0;i<15;i++)                 //时序最好对照datasheet来看
  52. //        {
  53. //                SCLK=0;
  54. //                delay_us(1);
  55. //                SCLK=1;  
  56. //    data<<=1;                                   //移位
  57. //                if(SDO==0)                      //判断数据线数据
  58. //                data&=0xfffe;
  59. //                if(SDO==1)
  60. //                data|=0x0001;
  61. //                delay_us(1);                    //延时
  62. //        }

  63.         SCLK=1;        //结束,时钟拉高
  64.         delay_us(5);
  65.         CS=1;                             //片选拉高
  66.         delay_us(1);                      //延时
  67.         data&=0x0fff;                     //保证高四位为0
  68.         return data;
  69. }
  70.        
  71.        
  72.        
复制代码

所有资料51hei提供下载:
ADS7886.zip (833.88 KB, 下载次数: 25)
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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