找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2992|回复: 3
打印 上一主题 下一主题
收起左侧

AD7193驱动代码 C语言

[复制链接]
跳转到指定楼层
楼主
AD7193是一款ADI公司的AD芯片,差分带PGA


具体步骤
1.Init
2.Reset
3.Calibrate(zero&full)校准
4.RangeSetup(1,gain1)单双极性以及增益选择
5.ChannelSelect通道选择
6.SingleConversion获得AD值
7.ConvertToVolts转换成电压
8.ContinuousReadAvg(10)10次采样求均值
9.ConvertToVolts
10.TemperatureRead获得温度AD


这些代码是MCU通用的,不需修改
需要修改的是SPI函数



单片机源程序如下:
  1. #include "YRDKRL78G13.h"    // YRDKRL78G13 definitions.
  2. #include "ST7579.h"         // ST7579 definitions.
  3. #include "TIME.h"           // TIME definitions.
  4. #include "AD7193.h"         // AD7193 definitions.

  5. /******************************************************************************/
  6. /************************ Variables Definitions *******************************/
  7. /******************************************************************************/
  8. unsigned long result   = 0;
  9. unsigned long degreesC = 0;
  10. float         voltage  = 0;

  11. /***************************************************************************//**
  12. * @brief Draws the ADI logo and displays the name of ADI component.
  13. *
  14. * @param componentName - The name of the ADI component.
  15. *
  16. * @return None.
  17. *******************************************************************************/
  18. void ADI_Component(unsigned char* string)
  19. {
  20.     const unsigned char adiComponent[7] =
  21.     {
  22.         0xFE, 0xFE, 0x82, 0xC6, 0xEE, 0xFE, 0xFE
  23.     };
  24.     ST7579_Image(0, 0, adiComponent, 7, 8);
  25.     ST7579_String(0, 9, string, 0);
  26. }

  27. /***************************************************************************//**
  28. * @brief Main function.
  29. *
  30. * @return None.
  31. *******************************************************************************/
  32. void main(void)
  33. {        
  34.     /* Initialize YRDKRL78G13. */
  35.     YRDKRL78G13_Init();
  36.    
  37.     /* Enable interrupts. */
  38.     __enable_interrupt();
  39.         
  40.     /* Initialize timer. */
  41.     TIME_Init();
  42.    
  43.     /* Initialize the ST7579 Display. */
  44.     ST7579_Init();
  45.    
  46.     /* Initialize AD7193 device. */
  47.     if(AD7193_Init())
  48.     {
  49.         ADI_Component("AD7193 OK");
  50.     }
  51.     else
  52.     {
  53.         ADI_Component("AD7193 Err");
  54.     }
  55.     /* Reset the device. */
  56.     AD7193_Reset();
  57.    
  58.     /* Allow a period of 500 us before accessing any of the on-chip registers. */
  59.     TIME_DelayUs(500);
  60.    
  61.     /* Calibrate channel 0. */
  62.     AD7193_Calibrate(AD7193_MODE_CAL_INT_ZERO, AD7193_CH_0);
  63.     AD7193_Calibrate(AD7193_MODE_CAL_INT_FULL, AD7193_CH_0);
  64.    
  65.     while(1)
  66.     {
  67.         /* Select unipolar operation and ADC's input range to +-2.5V. */
  68.         AD7193_RangeSetup(1, AD7193_CONF_GAIN_1);

  69.         /* Select channel AIN1(+) - AIN2(-). */
  70.         AD7193_ChannelSelect(AD7193_CH_0);
  71.         
  72.         /* Perform a single conversion. */
  73.         result = AD7193_SingleConversion();
  74.         ST7579_String(2, 0, "CHANNEL 0:", 0);
  75.         ST7579_String(3, 0, "RAW:          ", 0);
  76.         ST7579_String(4, 0, "1RD:       [V]", 0);
  77.         ST7579_HexNumber(3, 30, result, 0);
  78.         
  79.         /* The value of the voltage reference on PmodAD5 is 2.5V by default. */
  80.         voltage = AD7193_ConvertToVolts(result, 2.5);
  81.         ST7579_FloatNumber(4, 30, voltage, 3, 0);
  82.         
  83.         /* Continuous reads. */
  84.         result = AD7193_ContinuousReadAvg(10);
  85.         voltage = AD7193_ConvertToVolts(result, 2.5);
  86.         ST7579_String(5, 0, "RAW:        ", 0);
  87.         ST7579_String(6, 0, "AVG:       [V]", 0);
  88.         ST7579_HexNumber(5, 30, result, 0);
  89.         ST7579_FloatNumber(6, 30, voltage, 3, 0);   
  90.         
  91.         /* Read the temperature. */
  92.         degreesC = AD7193_TemperatureRead();
  93.         ST7579_String(7, 0, "TMP:       oC", 0);
  94.         ST7579_Number(7, 30, degreesC, 0);
  95.     }
  96. }
复制代码

所有资料51hei提供下载:
7193.zip (26.75 KB, 下载次数: 63)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:495852 发表于 2019-10-28 16:30 | 只看该作者
感谢分享
回复

使用道具 举报

板凳
ID:64765 发表于 2020-2-16 11:18 | 只看该作者
很好,学习了,谢谢楼主分享。
回复

使用道具 举报

地板
ID:333467 发表于 2022-5-27 17:59 | 只看该作者
感谢楼主,应该和AD7190差不多吧
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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