3570|2

471

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

基于LM3S2965的ADS1115的驱动程序 [复制链接]

  1. 注意的是,ADS1115可以选择差分输入方式。通过配置寄存器设置。datasheet的19页有详细说明。地址端ADDR接地,所以器件地址为0x90.好了附代码;
  2. 基准的设置是通过配置寄存器的PCA位,datasheet的13页表3有详细说明。如果需要改变采样通道,是需要对配置寄存器的12到14位重新设置的。
  3. *#include "ads1115.h"
  4. //ADS1115 GPIO 初始化
  5. void ADSIOInit()
  6. {
  7. SysCtlPeripheralEnable(ADSCTLPERIPH);
  8. GPIOPinTypeGPIOOutput(ADS_PORT_BASE,ADS_SCL_PIN);
  9. GPIOPinTypeGPIOOutput(ADS_PORT_BASE,ADS_SDA_PIN);
  10. ADS_SCL_H;
  11. ADS_SDA_H;
  12. }
  13. //发送开始信号
  14. void ADSSendStart()
  15. {
  16. ADS_SDA_H;
  17. ADS_SCL_H;
  18. ADS_SDA_L;
  19. ADS_SCL_L;
  20. }
  21. //发送停止信号
  22. void ADSSendStop()
  23. {
  24. ADS_SDA_L;
  25. ADS_SCL_H;
  26. ADS_SDA_H;
  27. ADS_SCL_L;

  28. }
  29. //发送一个字节
  30. void ADSSendByte(unsigned char cByte)
  31. {
  32. unsigned char i=0;

  33. for(i=0;i<8;i++)
  34. {
  35. if(cByte&0x80)
  36. ADS_SDA_H;
  37. else
  38. ADS_SDA_L;
  39. cByte<<=1;
  40. ADS_SCL_H;
  41. ADS_SCL_L;
  42. }
  43. ADS_SDA_IN;
  44. ADS_SCL_H;
  45. ADS_SCL_L;
  46. ADS_SDA_OUT;

  47. }
  48. //得到一个字节
  49. unsigned char ADSGetByte()
  50. {
  51. unsigned char i=0;
  52. unsigned char GetDAT=0;

  53. ADS_SDA_IN;
  54. for(i=0;i<8;i++)
  55. {
  56. GetDAT<<=1;
  57. ADS_SCL_H;
  58. if(ADS_SDA_DAT)
  59. GetDAT|=1;
  60. ADS_SCL_L;
  61. }
  62. ADS_SCL_H;
  63. ADS_SCL_L;
  64. ADS_SDA_OUT;
  65. return GetDAT;
  66. }
  67. //差分通道设置,采样速率设置
  68. //cChanel: 0x12,通道0,0X22通道1 ref=4.096; (datasheet 19页有对配置寄存器位详细说明)
  69. void Confige1115A(unsigned char cChanel)
  70. {
  71. unsigned char i=0;
  72. unsigned char Initdata[4]={0};

  73. Initdata[0] =0x90; // 地址 + 写命令
  74. Initdata[1] =0x01; // 指向配置寄存器
  75. Initdata[2] =cChanel; // 配置字高字节 ref=4.096v,差分通道1,3
  76. // Initdata[2] =0x44; // 配置字高字节 ref=2.048v
  77. Initdata[3] =0x83; // 配置字低字节
  78. ADSSendStart();
  79. for(i=0;i<4;i++)
  80. {
  81. ADSSendByte(Initdata[i]);
  82. }
  83. ADSSendStop();
  84. }
  85. //指向寄存器设置
  86. void Pointregister(void)
  87. {
  88. unsigned char i=0;
  89. unsigned char Initdata[4]={0};

  90. Initdata[0] =0x90; // 地址 + 写命令
  91. Initdata[1] =0x00; // 指向转换结果寄存器

  92. ADS_SDA_OUT;
  93. ADSSendStart();
  94. for(i=0;i<2;i++)
  95. {
  96. ADSSendByte(Initdata[i]);
  97. }
  98. ADSSendStop();
  99. }
  100. //得到转换电压
  101. float GetADVoltage(unsigned char cChanel)
  102. {
  103. unsigned short int Result=0;

  104. Confige1115A(cChanel);
  105. Pointregister();

  106. ADSSendStart();
  107. ADSSendByte(0x91); //地址+读
  108. Result|=ADSGetByte()<<8;
  109. Result|=ADSGetByte();
  110. ADSSendStop();
  111. return (float)((float)Result/32768.0)*4.096;
  112. }

复制代码

[ 本帖最后由 zw357234798 于 2012-8-6 09:14 编辑 ]

最新回复

向LZ学习  详情 回复 发表于 2012-8-6 12:26
 
点赞 关注

回复
举报

3836

帖子

19

TA的资源

纯净的硅(中级)

沙发
 
谢谢楼主分享
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
向LZ学习
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表