前几天做项目用到了一款国产多路ADC采集芯片瑞盟Ms1243,期间遇到不少坑,来跟大家分享一下。
     MS1242/MS1243 是一款高精度、宽动态范围、Σ-Δ模 数转换芯片,其工作电压为 2.7V 至 5.25V,可以达到 24bit 无失码转换,且其有效精度可达 21bit。
     所谓的无失码就是就是不丢码,比如 8位的ADC,加入从0000 0000 到1111 1111 在实际测试中,每一个码都可以测到就称之为无失码, 若在0000 0001 往上走 到0000 0003的时候 没有出现过0000 0002 就说明丢码了。
    该芯片有8个模拟输入通道,如果作为单通道输入,可以是8路ADC采集,如果作为差分,一路固定参考源,另外7路差分ADC,我才用的是AIN0 - AIN6是变换通道输入。AIN7接地作为公共参考端。以下是该芯片的内部结构图和原理图。  
    说到原理图,这就遇到了第一个坑,因为我懒,直接从某商城上下的它的原理图,如下图所示,注意!!这个图是错误的。
   
大家看到了吧,他的引脚顺序和人家数据不一样!!坑死我了!! 左边是错的,右边才是对的, 接着往下,来看他的引脚说明。

第二个坑,第4号管脚,4 PDWN I 掉电控制信号,低有效。这个芯片是由掉电控制,当该引脚输入为低电平的时候,芯片掉电不工作,
当初画图有点快,忘记了这个管脚,以为是内部上拉高电平。直至刷完板子回来才发现这个问题。该引脚可以通过1个4.7k的电阻上拉至
VCC电平即可,如果考虑的低功耗,可以通过引脚来控制该芯片引脚的电平。
接着往下,要注意的是外部晶振的时钟的频率要求

要求是1M - 5M之间,我采用的是4.9152M晶振,谐振电容选用10pf ,原理图如下
 
其他参数指标大家可以自己了解一下,我们接着往下说。
该芯片需要有外部的参考电压源,这个参考电压源的电压是有要求的,如下图所示

我们采用的是3.3V供电,参考电压电压源选择是2.5V,注意,是在RANGE值为1的时候才可设置为2.5V。硬件大致就这些,接下来我们说软件部分。
MCU我们采用的是华大HC32F460,通过SPI协议与MS1243进行通信。
第一个坑是时钟频率
MS1243的时钟频率为4.9152M,我们MCU的SPI时钟频率不能高于该时钟频率,最好小于芯片时钟频率的1/2
我们采用的是1.5M时钟的频率,华大的SPI时钟频率为100M,因此进行时钟分频。
  stcSpiInit.enClkDiv = SpiClkDiv64; //时钟分频64,我们进行了64分频,100 / 64  = 1.5625M,比较合适。 
第二个坑是MS1243 空闲时的时钟极性和时钟相位。

由图得知,MS1243的SPI协议规定为空闲时时钟为低电平,第一个上升沿发送数据,偶数边沿采集数据,不要弄反了。

第三个坑

DRDY管脚是数据是都准备就绪的标志,当该引脚电平为低的时候,表示数据准备好可以度,当该引脚电平为低的时候,此时数据正在转换,不能去读,
因此可以将此管脚作为中断输入,下降沿触发去读取24位数据。
    当MCU没给MS143芯片读取数据信号事,MS1243会自己按照一定的频率进行数据更新,频率如下图所示。

第四个坑是该芯片需要校正时候的延时问题和置位问题。

根据晶振的频率,一个数据输出周期大概是50ms左右,两个时钟周期就是100ms,我们延时150ms

值得注意的是,ACR寄存器第二个为即RANGE校准是必须为0,而我们需要的是RANGE为1。因此在校准完成之后
将ACR寄存器的RANGE位置1.并且校准完之后,第一个数据是不正确的,应该舍弃。

第四个坑,也是和重要的就是发送读取命令和读取数据要有足够的时间间隔。

SDI是数据输入,也就是MCU给MS1243发送命令或者写寄存器
该芯片读取数据的命令有两种,一种是连续读取,一种是单词读取
我们采用的单次读取操作,即发送命令
static unsigned char MS1243_SendByte(unsigned char byte)
{
    unsigned char u8Byte;

/* Wait tx buffer empty */
    while (Reset == SPI_GetFlag(MS1243_SPI1_UNIT, SpiFlagSendBufferEmpty))
    {
    }
    /* Send data */
    SPI_SendData8(MS1243_SPI1_UNIT, byte);
    /* Wait rx buffer full */
    while (Reset == SPI_GetFlag(MS1243_SPI1_UNIT, SpiFlagReceiveBufferFull))
    {
    }
    /* Receive data */
    u8Byte = SPI_ReceiveData8(MS1243_SPI1_UNIT);

return u8Byte;
}

MS1243_SendByte(CMD_RDATA);


发送完读取命令之后,要等待50个时钟周期, 50 *(1 / 4915200) = 10us左右 
发送完转换命令之后,我们延时了10us,然后进行了数据读取

读取了3个字节 24位的数据
然后将读取的数据转换为电压,24位的分辨率

得到电压之后进行相应的运算转换即可。
最后一点,我们是多通道的ADC转化芯片,肯定要进行采集通道的切换操作
  
切换通道指令即往寄存器MUX写通道配置信息,高四位正输入端的通道,低四位为负输入端通道,我们负输入端固定,即为MS1243_MUXN_AIN7。
发送配置MUX寄存器指令

写寄存器命令WREG,读寄存器命令RREG


注意一点,在切换通道时,尽量在DRDY引脚电平为低的时候,防止出现错误。
读取完24位数据之后,DRDY会立即被拉高。
以上就对写MS4243多路ADC采集芯片学习的总结。
---------------------
作者:woai32lala
链接:https://bbs.21ic.com/icview-3225296-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

国产AD芯片 MS1243应用相关推荐

  1. 国产AI全面崛起!盘点11款2019年热门国产AI芯片

    来源:芯师爷 人工智能的崛起主要得益于算法.数据和计算能力三方面的突破,这三方面的能力展现离不开AI芯片.由此,AI芯片的研发制造成了人工智能技术发展过程中的关键环节. 不同于其它传统芯片,AI芯片是 ...

  2. 采用我国国产处理器的超级计算机是,“中国芯”超级电脑合肥诞生 首次采用国产CPU芯片...

    首次采用国产CPU芯片,每秒计算一万亿次的"超级"计算机昨天在合肥通过专家鉴定. 记者了解到,这台基于龙芯2号的国产万亿次高性能计算机系统KD-50-I,由中国科学技术大学研制成功 ...

  3. 国产arm芯片CH32F103芯片开发下载使用简介

    国产arm芯片厂家越来越多,这里介绍南京沁恒(就是大家熟知的ch340usb转换芯片那家)推出的国产arm芯片CH32F103芯片,对标stm32F103系列芯片,管脚全部兼容,寄存器全部兼容,但增强 ...

  4. 华芯通关闭,华为等国产服务器芯片企业再受打击

    国产服务器芯片企业之一的华芯通的CEO已离职,预计本月底关闭,这对于国产服务器芯片产业来说显然是一个重大打击,而对于同样研发ARM架构服务器芯片的华为.飞腾等国产服务器芯片企业来说更是前景不妙的信号. ...

  5. 处理器架构 (十五) 国产cpu芯片与架构

    国产cpu芯片 x86架构 :海光,兆芯 arm架构 :海思,飞腾(ARMv8) mips架构 :龙芯(loongISA) alpha架构 :申威 PowerPC架构 :中晟宏芯 龙芯 2001年,计 ...

  6. 5款国产ARM芯片(对标stm32f103c8t6)测试评估

    此文转载自:https://blog.csdn.net/weixin_41565556/article/details/112515813#commentBox 5款国产ARM-Cortex3芯片(对 ...

  7. 5款国产ARM芯片替代ST

    5款国产ARM芯片替代ST GD32F103c8t6(北京易兆创新) APM32F103c8t6(珠海极海) HK32F103c8t6(深圳航顺) CKSF103c8t6(无锡中科芯) CH32F10 ...

  8. Xilinx芯片太贵,我选择国产替代!聊聊国产FPGA芯片选型

    01  前言 本文来聊聊目前国内FPGA发展到了什么水平?都有哪些做得比较好的公司?FPGA国产替代所需要考虑哪些因素? 部分内容和数据参考自网络和官方网站,有不对或不准确的地方,希望能和各位大佬一起 ...

  9. 三大研究成果入选ISCA ,推动国产自主芯片的产业化落地

    阿里平头哥 布局行业4年之久,在经历了成立达摩院立项突破.资本并购等多轮铺垫之后,阿里巴巴正式宣布成立独立芯片公司并将其命名为平头哥半导体有限公司,旨在推进云端一体化的芯片布局.希望通过自研的强大的技 ...

最新文章

  1. php分页显示页数代码,php-Codeigniter分页显示结果数和页数
  2. HEAP: Free Heap block XXXX modified at XXXX after it was freed
  3. 国家卫计委倡导健康生活理念:每天发呆5分钟
  4. 。。。。。。想不通的ADO.NET。
  5. DCMTK:将VeriLUM CCx_xx.dat文件转换为DCMTK显示文件
  6. 通过OpenFoam记录一些c++的trick(持续更新)
  7. 记表格设计规范整理与页面可视化生成工具开发
  8. android web 访问数据库,Web下的JDBC访问数据库的基本步骤
  9. linux拷贝文件时如果想保留文件原有的时间属性,可以使用选项,Linux考试题.doc
  10. @IT老司机 6月3日,扫除技术与产品选型难题,CSDN选型智囊团来了!
  11. 致敬Github那些卓越贡献的大佬和他们的公众号
  12. 错误与异常_1-5选择题
  13. eclipse安装SVN插件(2020最新,亲测可用)
  14. qq家园纵横四海的源码
  15. Windows 10系统安装AutoCAD 2007
  16. 第九届山东理工大学ACM网络编程擂台赛 F题题解
  17. 计算机信息安全 概述
  18. 进阶的阿牛哥之pandas透视表pivot_table的使用
  19. Android 使用三级缓存实现对图片的加载
  20. shutdown关机命令 C语言 关机程序(恶搞 )

热门文章

  1. 小米8 小米9 红米小米改串 高通处理器 硬改 参数改机演示视频工具
  2. 图片格式转换软件下载
  3. python登陆Discuz!论坛通用代码
  4. 英语口语学习(15-16)
  5. 二、Element-UI
  6. 人生永无止境的意思是什么_人生的修行永无止境
  7. html页面跳转返回不要刷新,javascript跳转与返回和刷新页面的实例代码
  8. TCAD(technology computer aided design)学习笔记
  9. 解决win10笔记本没有WIFI选项的问题
  10. overloading和overriding,两者有什么区别和联系?