芯查查logo
  • 数据服务
    1. 新产品
    2. 物料选型
    3. 查替代
    4. 丝印反查
    5. 查品牌
    6. PCN/PDN
    7. 查方案
    8. 查代理
    9. 数据合作
  • SaaS/方案
      SaaS产品
    1. 供应链波动监控
    2. 半导体产业链地图
    3. BOM管理
    4. 解决方案
    5. 汽车电子
    6. 政府机构
    7. 数据API
  • 商城
  • 行业资讯
    1. 资讯
    2. 直播
  • 论坛社区
    1. 论坛
    2. 学习
    3. 测评中心
    4. 活动中心
    5. 积分商城
  • 查一下
  • 开通会员
基于CS5530设计的三路采集模块(主芯片STC8)
原创 发布时间:2022/12/09 19:02
简介:在电路板上集成3路压力传感器,利用SPI通讯对其数据进行采集。

模块一:电源部分,采用78M05做为模拟部分供电。

 

这里采用600R@100MHZ的磁珠对模拟电路和其他电路做了一个简单的隔离作用,实测过程中发现可以提高压力数据的稳定性。

模块二:CS5530部分

参考CS5530的数据手册的芯片供电范围:

 

由于使用STC芯片,这里首先选择的VA+ = 5V的供电,这样就不需要在做其他的电平,这样也可以减少因为引入的其他的电平产生的不必要的功耗。

当然使用该芯片作为压力采集的优点是,无需外部的外部电路,这样减少一部分的外围电路,直接使用内部的增益即可,如果是为了做毕设或者是个人爱好的话,只有简单的上图电路即可。如果需要数据稳定一些,需要将压力传感器的差分信号进行滤波才能接入电路,这样数据会稳定些.

模块三:分压电路及晶振电路

 

这里CS5530的基准电压采用电阻分压的方式进行采集,而没有采用AD780或者是其他的电压基准芯片进行设计是因为,若引入2.5V,基准电压芯片,则传感器供电电压需要和2.5V基准成比例移动,否则将导致传感器的读数出现系统误差,而使用软件滤波是无法剔除的,故这里只使用了简单的分压电压作为系统的基准电压,实测过程发现这样是可以满足项目要求的。

模块四:软件代码

CS5530初始化

unsigned char InitializationCs5530(void)

{

 unsigned char InitTemp = 0;

 unsigned int  setup1;

 

 CS5530PortInitialization();//启动串口。 

 

 //配置RS = 1 激活软件复位 

 Wr5_byte(0x03,0x20,0x00,0x00,0x00);//直接写5字节

 

 //读配置寄存器 ---等待复位结束!!!

 ad_time_5ms = 0;

 do    

 {

  S1rd4_Cs_byte(0x0b);//写1字节读4字节?  

  InitTemp = Cs_Rdata[3]&0x10;//判断RV是否为“1”?

  //ad_time_5ms;//超时判断

 }

 while((InitTemp==0)&&(ad_time_5ms < 200));

 

 //*************************************     

 //若RV为1,向RS写0

 Wr5_byte(0x03,0x00,0x00,0x00,0x00);//直接写5字节.

 ad_time_5ms = 0;

 

 do

 {

  //读配置寄存器  

  S1rd4_Cs_byte(0x0b);//写1字节读4字节。 

  //************************************  

  InitTemp = Cs_Rdata[3]&0x20;//判断RS是否为“1”。=0表示芯片正常!!初始化结束

  //ad_time_5ms;//超时判断

 }

 while((InitTemp==0x20)&&(ad_time_5ms < 200));

 //*************************************

 

 //量程=((VREF+)-(VREF-))/(GxA) G 是放大器的增益

 //VRS=0,A=2;当 VRS=1,A=1 复位后,单位增益缓冲器处于激活态,此时

 //若参考电压为 2.5V,则缺省的输入满量程电压范围为 2.5V。

 //若要使用仪表放大器(当增益设置大于 1x 时)并设置增益为 32x 时,

 //满量程输入电压为 2.5V/32 或约 78mV

 //当前配制:5V供电 --2.5V内部基准 使用setup1 和 setup2  [增益6 字速率240Hz] [增益0 字速率240Hz]

 //CS1 CS0 G2 G1----  G0 WR3 WR2 WR2 ---- WR0 U/B OL1 OL0--- DT  OCD NU NU

 //使用整形数据配制表! 设置增益 11<< (0-6)--字速率7<< (0-4,8-12) --

 //VRS=1 2.5v基准

 //当前满量程输入电压 A1=2.5v/1x64=39.0625mv

 //当前满量程输入电压 A1=2.5v/1x1=2.5v

 

    //------读配置寄存器

 //--------检测系统是否复位(cpu等待!!)

 //-----------写配置寄存器  #03H--#00H(参考电压为V=5伏 [2.5<V<VA+],如为2.5伏[1<V<2.5]则02H)--#00H--#0H--#0H

 //--------------设置通道设置寄存器[配制setup1-setup12] #05H--R1(#06H字速率高位)--#40H--R2(#46H;字速率高位)--41H

 //-------------------------------------------------------------------------

 

 //写配置寄存器。参考电压设置 2.50V   1V < VRS =< 2.5V 设置为1  

 InitTemp = (VRS_1V_2V5&0x01)<<1;

 

 //设置通道寄存器 增益 字速率 极性 开路检测  2个setup 共8个字节参数

 //采用16位处理数据---setupx

 setup1 = 0x0000;//通道1

 //setup1|=((unsigned int)GAIN_X32)<<11;//增益  0-6(1-64X倍增益)

 setup1|=((unsigned int)S_120_HZ)<<3;//字速率 0-4 8-12

 setup1|=((unsigned int)UNIPOLAR)<<2;//极性  0双极性-1单极性

 setup1|=((unsigned int)NORMAL)<<1;//开路检测 0正常-1电流源启动  

 

 Wr5_byte(0x03,InitTemp,v_value(setup1,1),v_value(setup1,0),0x00);//直接写5字节

 

 return 0;

}

这里我使用的STC系列的单片机属于大端模式,使用SPI通讯时,需要注意数据的移位问题,否则读出来的数据并不是很准确,也可以使用示波器查看数据或者是使用逻辑分析仪进行直接读取。

工程附件
AD板CS5530 PCB.pdf
AD板CS5530 SCH.pdf
51单片机
2022/12/09 19:02
  • 举报
😁😂😃😄😅😆😉😊😋😌😍😏😒😓😔😖😘😚😜😝😞😠😡😢😣😤😥😨😩😪😫😭😰😱😲😳😵😷😸😹😺😻😼😽😾😿🙀🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏✂✅✈✉✊✋✌✏✒✔✖✨✳✴❄❇❌❎❓❔❕❗❤➕➖➗➡➰🚀🚃🚄🚅🚇🚉🚌🚏🚑🚒🚓🚕🚗🚙🚚🚢🚤🚥🚧🚨🚩🚪🚫🚬🚭🚲🚶🚹🚺🚻🚼🚽🚾🛀Ⓜ🅰🅱🅾🅿🆎🆑🆒🆓🆔🆕
@好友

全部评论

加载中
游客登录通知
已选择 0 人
自定义圈子
移动
发布帖子
发布动态
发布问答
发布者
聪聪哥哥
最新帖子
芯查查技术沙龙第4期—ADI智能音频解决方案分享完美落幕LDO串联或并联二极管有什么用?电路保护与特殊应用解析缝纫机伺服0.3秒启停稳如磐石:三招驯服“针位漂移”顽疾伺服电机过载预警:从电流纹波揪出轴承暗伤的猎杀方案芯片丝印反查求助
热门版块
查看更多
问型号
问技术
问行情
麦博大学堂
电子元器件
汽车电子工程师论坛
工业电子专区
新手入门指南
单片机/MCU论坛
PCB设计

228

收藏

分享

微信扫码
分享给好友

评论