一、硬件(低速)光耦隔离,测试速率40Kbps较稳定,80Kbps不稳定。

二、MX软件SPI配置

SPI读函数

void Read_ATT7053_B( uint8_t addr, uint8_t *ATTdata, uint8_t len )
{
        uint32_t i=0;
    
      ATT7053_B_CS_Low;//片选拉低
      HAL_Delay_us(10);
      SPI3_ReadWriteByte(addr|Att7053_Readflag);  //读地址 
    for(i=0;i<len;i++)
    {
         ATTdata[i]=SPI3_ReadWriteByte(0xFF);      
    }
    ATT7053_B_CS_High;//片选拉高
}

SPI写函数 

//设置ATT7053参数  
void ATT7053_Set( uint8_t addr, uint8_t *ATTdata, uint8_t len )
{
    uint8_t i=0;
    
    ATT7053_B_CS_Low;//片选拉低
    HAL_Delay_us(10);
    SPI3_ReadWriteByte(addr|Att7053_Writeflag);  //写地址 
    for(i=0;i<len;i++)
    {
         SPI3_ReadWriteByte(ATTdata[len-i-1]);      
    }
    ATT7053_B_CS_High;//片选拉高
   
}

通讯校验函数//可以不用
uint32_t COMCheckB(uint8_t *Rx_Data,uint8_t len)
{
    uint8_t   COMChecksum[3]={0,0,0};
    uint16_t  Rx_Checksum=0,ATT_Checksum=0,Check_OK=0,i=0;
    
    Read_ATT7053_B(COMChecksum_Add,COMChecksum,len);
  Rx_Checksum=COMChecksum[1]*256+COMChecksum[2];
    
    ATT_Checksum=COMChecksum[0];//上次通讯的命令字
    for(i=0;i<len;i++)
      ATT_Checksum+=Rx_Data[i];
    if(Rx_Checksum==ATT_Checksum)
    {
      Check_OK=1; 
    }
    else
    {      
        Check_OK=0;
    }
    return Check_OK;
}

主函数
void ATT7053_Pro(void)
{
    uint8_t        ATT_Data_A[3],ATT_Data_B[3];
    uint32_t    ATT_Rx_Data_A=0,ATT_Rx_Data_B=0,ADC_Data=0;
    
    //读芯片内部ChipID
    Read_ATT7053_B(ADDR_ChipID, ATT_Data_B,3);
    if(COMCheckB(ATT_Data_B,3)==1)//B路芯片校验通过
    {
        ATT_Rx_Data_B=(ATT_Data_B[0]<<16)|(ATT_Data_B[1]<<8)|ATT_Data_B[2];
    }
    if(ATT_Rx_Data_B != ChipID)//如果读取错误,对芯片重启
    {
        ATT7053_Err_Count++;//累计10次断电重启
        ATT7053_Rst();
    }else
    {
      ATT7053_Err_Count=0;
    }
    
    Read_ATT7053_B(Rms_U_Add,ATT_Data_B,3);//读取B路电压
    if(COMCheckB(ATT_Data_B,3)==1)//校验通过
    {
        ADC_Data=(ATT_Data_B[0]<<16)|(ATT_Data_B[1]<<8)|ATT_Data_B[2];
        AC_Voltage_B=5.2597842755*ADC_Data/10000;
    }

}

交流电压有效值寄存器 Rms_U_Add     08H

吐槽一下,这芯片手册校准方法写的地方太隐晦难懂,折腾我半天,实在没办法打厂家电话问出来的。 US0~US23根本不是19位ADC的LSB真实数据,是经过转换后的,乘以K后就能到得到实际电压数据。

注意:5.2597842755是K值系数,算出来写死即可。

已经把分压电阻的比例及误差也计算进去了,挺方便的。

K值校准方法(居然写在文档最下面)

电压、电流都是一样的计算方法

宏定义

#define   ChipID          0x7053B0
#define   ADDR_ChipID     0x1B 
#define   DeviceID        0x705321
#define   ADDR_DeviceID   0x1C

#define   COMChecksum_Add   0x17
#define   Rms_U_Add         0x08

#define   Att7053_Writeflag  0x80
#define   Att7053_Readflag   0

钜泉光电ATT7053C芯片STM32 SPI驱动相关推荐

  1. 关于钜泉光电ATT7053C计量芯片使用的若干经验

    大家好!第一次写东西,完全是当作自己的一个笔记来写的,笔法不成熟,有些凌乱.如果对一些小伙伴有所帮助的话是我的荣幸,也欢迎各位小伙伴指出其中的问题. 首先说一下,使用这款芯片呢是因为一个项目需求,之前 ...

  2. H7-TOOL发布固件V2.22, 增加FreeRTOS/uCOS2 Trace,加强RTT和CAN助手,脱机烧录增加比亚迪,上海芯圣51, TI, S32K3, 钜泉光电等

    H7-TOOL所有资源汇总(含操作手册): H7-TOOL开发工具,1拖4/16脱机烧录,高速DAPLINK,RTOS Trace,CAN/串口助手, 示波器, RTT等,支持WiFi,以太网,高速U ...

  3. 钜泉光电2018年 IC校招笔试题目

    前言 整理数字ic笔试面试题目,补充知识点! 声明:个人觉得,学习期间,基本上都是知识的搬运,所以本博客所有内容都可以被大家引用!为了大家方便引用,博客内的图片都没有加博客的水印(除非不是自己的或者没 ...

  4. STM32——SPI驱动SD卡

    文末有工程链接(FATFS文件系统也移植了) VCC:5V GND:GND MISO:PA6 MOSI:PA7 SCK:PA5 CS:PA4 /*外设驱动*/ /*.c*/ /*以下是SPI1口初始化 ...

  5. 0.96OLED STM32 SPI驱动(一)

    闲来无聊,翻出了一个OLED,本来想串流做个小显示器用,感觉难度太大.将就变成了下面这 个样子,姑且叫火柴人大乱斗之OLED. 火柴人之OLED 分两步走,先驱动OLED能显示一副图片,本篇讲述此内容 ...

  6. STM32CubeMX | 基于STM32使用HAL库硬件SPI驱动WK2124一拖四SPI转四路串口芯片

    STM32CubeMX | 基于STM32使用HAL库硬件SPI驱动WK2124一拖四SPI转四路串口芯片 STM32基础工程生成 首先使用STM32CUBEMX生成STM32的基础工程,配置时钟到7 ...

  7. STM32使用硬件SPI驱动RC522门禁模块

    0.前言 RC522射频门禁识别模块非常常用,某宝卖家提供的程序基本都是使用软件模拟SPI的方式进行驱动的,但是实测使用软件模拟SPI识别速率.准确性没有硬件SPI驱动时高,因此本篇博客用于记录使用S ...

  8. 基础篇010.2 STM32驱动RC522 RFID模块之二:STM32硬件SPI驱动RC522

    目录 1. 实验硬件及原理图 1.1 RFID硬件 1.2 硬件原理图 2. 单片机与RFID硬件模块分析 3. 利用STM32CubeMX创建MDK工程 3.1 STM32CubeMX工程创建 3. ...

  9. 嵌入式开发-STM32硬件SPI驱动TFT屏

    嵌入式开发-STM32硬件SPI驱动TFT屏 这次用到的TFT屏 CubeMX设置 代码编写 增加的内容 需要注意问题 代码下载 这次用到的TFT屏 现在的TFT屏幕已经很便宜了,65536色屏幕,2 ...

最新文章

  1. 达摩院副院长金榕:中国 AI 将向何处?热潮有回落,但不应沮丧
  2. 70岁Hinton还在努力推翻自己积累了30年的学术成果,他让我知道了什么叫做生命力...
  3. 神仙打架激辩深度学习:LeCun出大招,马库斯放狠话,机器学习先驱隔空“互怼”...
  4. matlab径向分布函数作图_常见的概率分布(matlab作图)
  5. vue-resource
  6. 父类与子类间的隐藏与重写
  7. 毕业了去哪里工作,一位毕业多年北漂人的经验感悟
  8. Linux下安装VSCA
  9. 小白一步步:EntLib5.0 - Data Access 最简练习
  10. ffmpeg 音乐循环_Android使用FFmpeg(四)--ffmpeg实现音频播放(使用AudioTrack进行播放)
  11. 笔记本电脑连接无线局域网怎么设置?
  12. TypeError: AMap.MouseTool is not a constructor TypeError: AMap.MouseTool is not a constructor
  13. 来自尼古拉斯的编码风格
  14. 快手进军元宇宙:数字人主播拉动“三驾马车”
  15. python常用的正则符号汇总
  16. 这个春天,邀你一起探寻AI与青春的碰撞之力
  17. 全站仪和手机连接软件_南方全站仪传输软件-南方全站仪传输软件下载 1.0 中文版 - 河东下载站...
  18. uni一t 说明书_UNI-T 优利德 UT202 钳形万用表 日常生活使用体验
  19. 崩坏3服务器维护2月8号,新版本上线!《崩坏3》2月8日新版本更新内容一览
  20. matlab 用古典雅可比方法求矩阵特征根 (仅使用基础函数)

热门文章

  1. chrome浏览器手动添加cookie
  2. 全国计算机二级java模拟,全国计算机二级java模拟试题.doc
  3. 使用Actuator 实现Spring Boot应用监控
  4. python实现16进制数转ASCII码并写入文本
  5. 教你准确判断两个结构体是否相等
  6. css 页面从左侧向右滑入,动画只执行一次
  7. 稻草人php,稻草人PHP系统1.0.4发布
  8. Eudemon防火墙基本配置
  9. 数据库之分库分表-垂直?水平?
  10. 使用springMVC AOP实现日记记录