钜泉光电ATT7053C芯片STM32 SPI驱动
一、硬件(低速)光耦隔离,测试速率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驱动相关推荐
- 关于钜泉光电ATT7053C计量芯片使用的若干经验
大家好!第一次写东西,完全是当作自己的一个笔记来写的,笔法不成熟,有些凌乱.如果对一些小伙伴有所帮助的话是我的荣幸,也欢迎各位小伙伴指出其中的问题. 首先说一下,使用这款芯片呢是因为一个项目需求,之前 ...
- 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 ...
- 钜泉光电2018年 IC校招笔试题目
前言 整理数字ic笔试面试题目,补充知识点! 声明:个人觉得,学习期间,基本上都是知识的搬运,所以本博客所有内容都可以被大家引用!为了大家方便引用,博客内的图片都没有加博客的水印(除非不是自己的或者没 ...
- STM32——SPI驱动SD卡
文末有工程链接(FATFS文件系统也移植了) VCC:5V GND:GND MISO:PA6 MOSI:PA7 SCK:PA5 CS:PA4 /*外设驱动*/ /*.c*/ /*以下是SPI1口初始化 ...
- 0.96OLED STM32 SPI驱动(一)
闲来无聊,翻出了一个OLED,本来想串流做个小显示器用,感觉难度太大.将就变成了下面这 个样子,姑且叫火柴人大乱斗之OLED. 火柴人之OLED 分两步走,先驱动OLED能显示一副图片,本篇讲述此内容 ...
- STM32CubeMX | 基于STM32使用HAL库硬件SPI驱动WK2124一拖四SPI转四路串口芯片
STM32CubeMX | 基于STM32使用HAL库硬件SPI驱动WK2124一拖四SPI转四路串口芯片 STM32基础工程生成 首先使用STM32CUBEMX生成STM32的基础工程,配置时钟到7 ...
- STM32使用硬件SPI驱动RC522门禁模块
0.前言 RC522射频门禁识别模块非常常用,某宝卖家提供的程序基本都是使用软件模拟SPI的方式进行驱动的,但是实测使用软件模拟SPI识别速率.准确性没有硬件SPI驱动时高,因此本篇博客用于记录使用S ...
- 基础篇010.2 STM32驱动RC522 RFID模块之二:STM32硬件SPI驱动RC522
目录 1. 实验硬件及原理图 1.1 RFID硬件 1.2 硬件原理图 2. 单片机与RFID硬件模块分析 3. 利用STM32CubeMX创建MDK工程 3.1 STM32CubeMX工程创建 3. ...
- 嵌入式开发-STM32硬件SPI驱动TFT屏
嵌入式开发-STM32硬件SPI驱动TFT屏 这次用到的TFT屏 CubeMX设置 代码编写 增加的内容 需要注意问题 代码下载 这次用到的TFT屏 现在的TFT屏幕已经很便宜了,65536色屏幕,2 ...
最新文章
- 达摩院副院长金榕:中国 AI 将向何处?热潮有回落,但不应沮丧
- 70岁Hinton还在努力推翻自己积累了30年的学术成果,他让我知道了什么叫做生命力...
- 神仙打架激辩深度学习:LeCun出大招,马库斯放狠话,机器学习先驱隔空“互怼”...
- matlab径向分布函数作图_常见的概率分布(matlab作图)
- vue-resource
- 父类与子类间的隐藏与重写
- 毕业了去哪里工作,一位毕业多年北漂人的经验感悟
- Linux下安装VSCA
- 小白一步步:EntLib5.0 - Data Access 最简练习
- ffmpeg 音乐循环_Android使用FFmpeg(四)--ffmpeg实现音频播放(使用AudioTrack进行播放)
- 笔记本电脑连接无线局域网怎么设置?
- TypeError: AMap.MouseTool is not a constructor TypeError: AMap.MouseTool is not a constructor
- 来自尼古拉斯的编码风格
- 快手进军元宇宙:数字人主播拉动“三驾马车”
- python常用的正则符号汇总
- 这个春天,邀你一起探寻AI与青春的碰撞之力
- 全站仪和手机连接软件_南方全站仪传输软件-南方全站仪传输软件下载 1.0 中文版 - 河东下载站...
- uni一t 说明书_UNI-T 优利德 UT202 钳形万用表 日常生活使用体验
- 崩坏3服务器维护2月8号,新版本上线!《崩坏3》2月8日新版本更新内容一览
- matlab 用古典雅可比方法求矩阵特征根 (仅使用基础函数)