数模转换芯片ADC:SGM58200开发以及相关应用

概要:主要针对圣邦的型号为SGM58200的数模转换芯片的配置以及常用使用方法做出介绍和解释,包含但不仅限对于不同采样周期的配置和计算,及与一些常用其他品牌的性能对比介绍和说明。


文章目录

  • 数模转换芯片ADC:SGM58200开发以及相关应用
  • 一、SGM58200概况
  • 二、ADC设备地址
  • 二、寄存器介绍
    • 1.Conversion Register
    • 2.Config Register
    • 3. Lo_Thresh & Hi_Thresh
    • 4.Config1 Register
    • 5.Chip ID
    • 6.GN_Trim1 for EXT_REF
  • 三、Demo实例

一、SGM58200概况


支持IIC从设备的通讯方式,24位精度,供电电压3.0V ~5.5V,可编程信号转化周期SPS范围从6.25 SPS到960 SPS及一定的PGA增益设置,支持单端采样或多端及差分采样等功能,大致嵌入式关注的内容如上所述,其他的内容在说明书中基本都能查阅。

二、ADC设备地址


本ADC提供的1个地址pin,可以用于联级IIC通讯时从设备地址的确认,如果只使用一个ADC的情况,需要注意硬件工程师将该脚实际连接的地方,以确定设备地址。

二、寄存器介绍


本芯片一共包含7个需要配置的寄存器,根据需求选用,或默认而不必配置。

1.Conversion Register

功能描述:用于存放AD转换后的数据,在重新上电后以及等待每一次的转换结果除来之前,寄存器中的所有位都会被清零,直到完成一次转换。
读写性:只读
寄存器地址: 0x0
位号与功能:无

2.Config Register

功能描述:配置寄存器,包含大部分芯片转化功能的配置位,如操作模式,输入信号选项,波特率,PGA增益设置,差分对比模式配置等。该寄存器是最主要的配置相关寄存器,大多数的性能控制均在此处配置。
读写性:读/写
寄存器地址:0x1
位号与功能:

Bit[15]: 设备的操作模式配置。当为‘写’时:0-无影响,1-进行单次转化,可以理解为是设备的一种使能配置。当为‘读’时,读回来为0-设备当前正在一次转化工作中,1-当前空闲。

Bit[14:12]: 输入管脚配置,根据写入该寄存器不同值,可以配置不同输入引脚作为信号源。当AINn = GND的这种情况,就可以对某一个做类似单端电压的采样工作,将GND换成其他AINx的话就可以作为一种差分结果的采样工作方式。

Bit[11:9]: PGA增益配置,如上图,此外对PGA的配置全范围比例,在说明中也有,如下图。


Bit[8]: 配置采样模式,连续采样模式和单次采样模式。
对于不同的采样模式,需要不同的逻辑来处理,比较直接的区别在于,连续采样模式在配置完成之后,SGM就开始连续采样,并且按照配置的SPS值进行更新ad值,对于MCU来说,需要计算合适的延时,确保每次接收到的ad值是刚更新完成的数据。
而单次采样则不必考虑这种延时,由于单次采样每次都需要重新配置,所以每一个CLK信号之后的数据内容都能保证是最新的ad值。
对于是使用单次采样还是连续采样模式,主要参考AINp和AINn是否需要切换,对于同一个AD的两个input在不需要切换的情况下,只需要做连续采样就可以了。
另一个考虑因素是采样速度的要求,单次采样每一次都要重新配置SGM,会耗费掉一定的实际时间。

Bit[7:5]: SPS配置,决定采样速率的重要因素,但是需要注意本寄存器只能配置其中某一行的频率,需要结合‘Config1 Register’一起使用。
此外,计算每次的采样实际时间是需要考虑滤波阶数的,在SGM58200中,滤波阶数不可配置,仅由SPS值决定,关于这一点,在说明书(2020年版本)中有明确说明:


例如配置连续采样模
式下的:
SPS = 50, DelayTime =(1000ms / 50)*3 = 60ms;
SPS =960,DelayTime =(1000ms / 960)*4 = 4.17ms;
这是单次不同SPS下的采样理论时间计算方式。

Bit[4]: 配置比较器模式,包含传统比较器和窗口比较器两种模式的配置。

Bit[3]: 配置比较器极性。

Bit[2]: 配置自锁比较器。

Bit[1:0]: 配置比较器使能或触发先后顺序。
主要对比较器的作用顺序,在1次转换,2次或4次转换后生效比较器的功能,或者是直接关闭比较器(默认)的使用,进行相关配置。

3. Lo_Thresh & Hi_Thresh

功能描述:采样电压上下限的配置。在这款AD芯片中的介绍中,号称的精度是24bit,但是实际可用的只有16bit,主要就是受限于,它的上限电压和下限电压都是16bit。如果需要使用小于16位的限制,就可以在此寄存器进行配置。

需要注意的有两点:1. 上下限电压值也受到PGA配置的影响。
2. 一般配置需要Li大于Lo,注意MSB的配置,默认配置中就是16位的最高最低配置,没有特殊情况就使用默认即可。
读写性:读/写
寄存器地址:0x2,0x3
位号与功能:Lo_thresh与Hi_thresh均为16位的数据寄存器,代表被配置的二进制值。

4.Config1 Register

功能描述:配置1寄存器,主要是一些其他的配置功能。
读写性:写(说明书暂未明确)
寄存器地址:0x4
位号与功能:
Bit[8]: 通过写‘1’进行power down操作。
Bit[7]:用于控制SPS值纵向表的寄存器配置,需要结合前面SPS操作一起配置。

Bit[6]: 通过写‘1’配置AINs(当前被配置的一对)输出2微安的电流源。

Bit[5]: 通过写‘1’配置ADC选用内部二极管通道。

Bit[4]: 配置IIC总线通信的电气特性,

Bit[3]: 通过写‘1’配置AIN3作为ADC的外部基准电压。

5.Chip ID

功能描述:产品ID和版本信息
读写性:只读
寄存器地址:0x5
位号与功能:
Bit[5~7]: 版本号
Bit[8~12]: ID号

6.GN_Trim1 for EXT_REF

功能描述:可配置的外部基准的补偿功能
读写性:未明确
寄存器地址:0x6
位号与功能:

手册中注明,当Config1 Register中如果配置Bit3是外部基准电压的话,可以在GN_Trim1本寄存器中进行进一步的相关配置,主要是为了补偿外部基准(如果存在)的误差错误。当然,如果没有调用外部基准,或是外部基准为0的时候,本寄存器的功能也就没有作用了。

三、Demo实例

部分寄存器操作代码如下:

void SGM_I2C_InitConfigRegister(unsigned char AinID)
{unsigned char devaddr = 0; //定义ADC设备地址unsigned char configaddr = 0;//定义设备寄存器地址unsigned short configdata = 0;//定义寄存器配置数据devaddr = 0x48; //GND-1001000, VDD-1001001, SDA-1001010, SCL-1001011
//选择设备地址,根据联级或其他实际配置做选择/*Config1 register的相关配置*/configaddr = 0x04;//Config1 register的寄存器地址configdata = 0x108; // 0x08:     0001 0000 1000
//Bit [8] = 1: PD power down this part
//Bit [7] = 0: Use SPS from 6.25Hz to 800Hz column
//Bit [6] = 0: No current sourced
//Bit [5] = 0: None
//Bit [4] = 0: Disable leakage blocking circuit.
//Bit [3] = 1:Use AIN3 as external reference for ADCI2C_WriteConfigRegister(devaddr, configaddr, configdata);//写入/*Config register的相关配置*/configaddr = 0x01;//Config register的寄存器地址configdata = 0;configdata |= (((U16)0x01) << 15);
//OS[15] = 1: 单次configdata |= ((((U16)AinID & 0x03) + 4) << 12);
//MUX[14:12]= 100: AINP = AIN0 and AINN = GND
//          = 101: AINP = AIN1 and AINN = GND
//          = 110: AINP = AIN2 and AINN = GND
//          = 111: AINP = AIN3 and AINN = GNDconfigdata |= (((U16)0x02) << 9);
//PGA[11:9] = 010: PGA = 8(+- 2.048V)configdata |= (((U16)0x01) << 8);
//MODE[8] = 1:单次采样模式  configdata |= (((U16)0x03) << 5);
//DR[7:5] = 011:50Hz 或 60HzI2C_WriteConfigRegister(devaddr, configaddr, configdata);//写入//启动RDY低有效模式/*Lo_Thresh register的相关配置*/configaddr = 0x02;//寄存器地址configdata = 0x00;                    I2C_WriteConfigRegister(devaddr, configaddr, configdata);/*Hi_Thresh register的相关配置*/configaddr = 0x03;//寄存器地址configdata = 0x8000;             I2C_WriteConfigRegister(devaddr, configaddr, configdata);}

Demo中对部分常用的寄存器和功能做出了配置,主要包括SPS采样率, AINx采样源选择,Ext外部基准选择,ADC设备地址选择,PGA增益比例,单次或连续采样模式配置,根据手册中不同寄存器地址写入相对应的值完成全部操作。
其他对ADC的功能配置需要依据产品实际需求,比如手册中明确提到对抗工频的采样率要求是50/60SPS,


此外还有一个本模块的隐藏问题,就是采样周期的计算,在前文中已经对采样计算方式做了描述,基于该ADC的滤波阶数不可配置的问题,对应的实际产生实时信号的延时需要注意,这个问题也导致他的采样速率会比其他产品有较明显的差异,在需要满足采样周期的前提下,建议多联级使用此ADC。

SGM58200开发以及相关应用相关推荐

  1. Revit二次开发入门相关安装和配置

    Revit二次开发入门相关安装和配置 最近一周,由于项目需要,需要做一个基于Revit的二次开发项目,也特意初步自学了Revit二次开发的相关知识.由于学习时间过短,了解到的只是皮毛,所有还希望大家能 ...

  2. JEECG微云快速开发平台相关资源下载

     JEECG微云快速开发平台相关资源下载 [复制链接]     jeecg_scott jeecg_scott 当前离线 注册时间 2013-1-6 最后登录 2014-4-30 阅读权限 200 ...

  3. 各种开发测试相关免费学习书籍

    https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md 免 ...

  4. 自学前端开发,相关网课分享

    自学前端开发,相关网课分享 自学前端开发,好的网课应该有这几点. 1完善的课程体系,前端html,css,js,vue,react,小程序,node,这几点都要有,否则找工作就没有优势. 2课程设置要 ...

  5. 维护人员工具_软件项目管理:软件工具与开发环境相关知识介绍

    1.软件工具相关名词概念 软件工具:用来辅助软件开发.运行.维护.管理等过程中的活动软件. 软件开发环境:是指支持软件产品开发的软件系统,它由软件工具集和环境集成机制构成. 软件工具集:包括支持软件开 ...

  6. 敏捷开发的相关学习文档路径

    1.敏捷开发之扫盲 http://www.cnblogs.com/taven/archive/2010/10/17/1853386.html 2.敏捷开发之product backlog http:/ ...

  7. 最全面鸿蒙系统开发的相关资料收录

    开发 本示例基于 OpenHarmony 下的 JavaScript UI 框架,进行项目目录解读,JS FA.常用和自定义组件.用户交互.JS 动画的实现,通过本示例可以基本了解和学习到 JavaS ...

  8. 开发STM32相关资料下载

    Ⅰ.写在前面 很多初学的朋友经常都会问"******"资料哪儿有? "******"文档在哪儿下载? "******"教程在哪儿可以获取的到 ...

  9. Linux驱动学习--HDMI开发(一) 相关协议及传输原理的介绍

    目录 一.引言 二.HDMI硬件接口及相关协议 -------> TMDS(转换最小化差分信令) -------> CEC(消费电子控制) -------> DDC(显示数据通道) ...

最新文章

  1. ajax 切换列表,javascript实现列表切换效果
  2. 关于JS面向对象、设计模式、以及继承的问题总结
  3. 开发app用户协议_兰州移动APP开发用户体验设计不应该做的事
  4. bootstrap 列表--水平定义列表
  5. 数据结构与算法--再来聊聊数组
  6. 家用电脑配置_游戏搬砖必看教程,游戏工作室电脑如何配置
  7. @Resource注解使用详解
  8. PHP字符串函数strrchr(查找指定字符在字符串中的最后一次出现)
  9. java服务端集成腾讯IM 腾讯云通讯生成usersig的方法
  10. html chm用浏览器打开,解决chm文件无法使用浏览器打开的问题
  11. win7注册表编辑已被管理员禁用怎么办
  12. linux中bond网卡是什么意思,linux 网卡bond
  13. Win7闪屏黑屏蓝屏解决办法
  14. 计算机秋招必备!杭州互联网大厂企业整理清单!
  15. 人工智能时代创造少儿编程实用能力
  16. 微信小程序学习打卡(2)
  17. 彩信库 mmslib 设计备忘录
  18. 关于vscode更新后 格式化代码造成函数括号后的空格被删除,单引号变双引号问题的解决方法
  19. 通过github构建个人博客1-基本环境搭建
  20. Python培训脱产班和周末班

热门文章

  1. js 动态创建table标签下的tr标签
  2. asp站点服务器,本地搭建ASP+IIS网站服务器平台
  3. react的路由守卫,路由鉴权,路由守卫的封装
  4. Java 3D导入obj模型后颜色显示 出错显示白色,或者笔记本电脑显示彩色,但是台式机仍为白色
  5. 避免SIGPIPE导致的iOS应用闪退 Avoiding SIGPIPE signal crash in iOS
  6. VMWARE 占用硬盘空间只增大不减少的清理办法
  7. 关于百度编辑器设置默认行间距段间距
  8. 搬运1——一个精美网页
  9. 安装宝塔 linux centos7.5 mysql redis nginx 安装环境
  10. 深度学习中的backbone、head、neck等名词解释