汽车电子笔记之-013:旋变硬解码ADI芯片AD2S1210使用记录(从零开始到软件实现)

news2024/9/20 13:30:52

目录

1、概述

2、技术规格

3、芯片引脚

4、旋变信号格式

5、使用过程只是要点分析

5.1、程序注意点分析

5.1.1、SPI配置时序

5.1.2、问题一:SPI时序问题

5.1.3、问题二:SPI读取时序(配置模式)

5.1.4、问题三:SPI写入时序(配置模式)

5.1.5、问题四:初始化问题

5.1.6、问题五:SAMPLE管脚

5.1.7、问题六:故障寄存器0xFF、复位寄存器0xF0

5.1.8、问题七:普通模式

5.2、常见问题分析

5.2.1、变比问题

5.2.2、削波故障

5.2.3、锁相故障

5.2.4、SPI通信故障

5.2.5、故障寄存器读取问题

5.2.6、数据处理错误

5.2.7、硬件连接问题

6、代码链接


1、概述

        AD2S1210是一款10位至16位分辨率旋变数字转换器,集成片上可编程正弦波振荡器,为旋变器提供正弦波激励。

        转换器的正弦和余弦输入端允许输入3.15 V p-p ± 27%、频率为2 kHz至20 kHz范围内的信号。 Type II伺服环路用于跟踪输入信号,并将正弦和余弦输入端的信息转换为输入角度和速度所对应的数字量。最大跟踪速率为3125 rps。

        AD2S1210是做电机控制器常见的位置解析芯片,具备解析出绝对位置(机械角度)与速度,解析的方式可以通过串口SPI、并口IO口、ABZ传出需要的信息。

        最大跟踪速率: 3125 rps(10位分辨率)注意这里的单位是秒,也就是3125转每秒,日常使用已经足够了。

        精度±2.5弧分,意味着该设备在测量角度时,其输出值与实际输入值之间的最大误差为±2.5弧分。

        弧分(Arcminute):弧分是一个角度单位,1弧分等于1/60度。因此,±2.5弧分等于±2.5/60度,约等于±0.04167度。

        最大精度:这一参数表示在理想条件下(例如温度、供电电压等都在规定范围内),AD2S1210在测量时可能产生的最大误差。换句话说,设备的输出值可能在实际值的±2.5弧分范围内波动。

         功能框图如下:

产品特色:

        1、比率跟踪转换。 Type II跟踪环路能够连续输出位置数据,且没有转换延迟。它还可以抑制噪声,并提供参考和输入信号的谐波失真容限。

        2、系统故障检测。故障检测电路可以检测旋变的信号丢失、超范围输入信号、输入信号失配或位置跟踪丢失。各故障检测阈值可以由用户单独编程,以便针对特定应用进行优化。

        3、输入信号范围。正弦和余弦输入端支持3.15 V p-p ± 27%的差分输入电压。

        4、可编程激励频率。可以轻松地将激励频率设置为2 kHz至20 kHz范围内的多个标准频率。一般使用10KHz.

        5、3种格式位置数据。通过16位并行端口或4线串行接口可以访问10位至16位绝对角位置数据。增量式编码器仿真采用标准A-quad-B格式,并提供方向输出。

        6、数字速度输出。通过16位并行端口或4线串行接口可以访问10位至16位带符号的数字量速度。

2、技术规格

        除非另有说明, AVDD = DVDD = 5.0 V ± 5%, CLKIN = 8.192 MHz ± 25%, EXC频率 = 10 kHz至20 kHz(10位)、 6 kHz至20 kHz(12位)、3 kHz至12 kHz(14位)、 2 kHz至10 kHz(16位); TA = TMIN至TMAX1。

        一般来说按照芯片推荐使用的方式,初始化正确就行了,然后在普通模式下直接运行即可。

        正弦余弦的电压是有一定需求的

        正余弦的输入一般来源于旋转变压器,既然叫变压器,肯定有变比,一般来说AD2S1210的励磁信号输出为正负5V也就是峰峰值10V的样子,什么叫变比呢,细节概念不怎么懂,实际使用就是假设变比为0.5,那么sin+与sin-的差分信号为正负2.5V,这点很重要,关乎到故障问题。

        不过芯片推荐的为P-P7.2V

        手册里面有个注意点的,sin毕竟随着位置呈现正弦变化,幅值也会变。

        假设通过SPI通信的波特率是多少呢?如下所示,与电源相关性比较强。

        串口读取的时候需要注意的: 在串行回读期间内, A0和A1应保持不变。要回读8位故障信息和16位位置/速度数据,可能需要24个时钟周期。如果不需要故障信息,可以在16个时钟周期之后释放A0/A1。

3、芯片引脚

        着重注意的引脚如下

引脚名称

说明

RES1

分辨率选择1。逻辑输入。利用RES1和RES0,可以对AD2S1210的分辨率进行编程,

CS

片选。低电平有效逻辑输入。 CS保持低电平时,器件使能。

SOE

串行输出使能。逻辑输入。该引脚使能并行或串行接口。 SOE引脚保持低电平时,选择串行接口; SOE引脚保

持高电平时,选择并行接口。

SAMPLE

采样结果。逻辑输入。 SAMPLE信号发生高电平至低电平转换后,数据从位置和速度积分器传输到位置和速度寄存器,故障寄存器也会进行更新。(与初始化上电有关)

RESET

复位。逻辑输入。 AD2S1210需要一个外部复位信号使RESET输入保持低电平,直到VDD达到规定的工作电压范围4.75 V至5.25 V以内。

A0

模式选择0。逻辑输入。

A1

模式选择1。逻辑输入。

RES0

分辨率选择0。逻辑输入。利用RES1和RES0,可以对AD2S1210的分辨率进行编程,

4、旋变信号格式

      

旋变的电信号如下

5、使用过程只是要点分析

5.1、程序注意点分析

5.1.1、SPI配置时序

本次SPI采用的是S32K3x系列的芯片实现的,先将SPI的时序列举出来再描述坑点。

属性

描述

波特率

5MHZ

CS空闲状态

Low

数据转换边沿

CPHA =1

下降沿,第二个边沿

时钟空闲状态

CPOL = 0

Low

数据传输宽度

8bit

数据传输方向

MSB

配置参考图

5.1.2、问题一:SPI时序问题

        一定要注意CPOL = 0、CPHA =1当这一项配置有问题的时候,A0 = 1,A1=1的配置模式下会出现读取的SPI数据D7位一直为1,也就是最终数据为0x80,如下图所示。

错误时序如下

        上述时序乍一看与手册里面描述是一致的,但是手册图示有个坑点的,注意时钟与片选低电平的位置,正确理解是时钟开始的时候是低电平,不是高电平,数据转换在上升沿也就是前沿,数据读取在后沿也就是下降沿,千万别被迷惑了。注意如下图所示。

      正常时序如下

5.1.3、问题二:SPI读取时序(配置模式)

        读取数据的时候注意点有以下两个,1、SPI传输需要先将OLD DATA传出来。2、读取只能以8bit传输一次,不能通过SPI一次读取n个字节的方式。下图串行接口读取时序—配置模式里面有明确指示。

伪代码如下

#define Register1   	0x88
#define Register2		0x89
#define Register3   	0x8A
#define Register4		0x8B
#define Register5   	0x8C
#define Register6		0x8D
(void)ReadAD2S1210(Register1);	/*将OLD DATA传出来不要,所以void了函数*/
For(i = 0; i<6;i++)
{
if(i <5)
{
Buff[i] = ReadAD2S1210(Register_i); /*正常读取0-5寄存器数据*/
}
else
{
 Buff[i] = ReadAD2S1210(Register1);  /*将Register6数据传出来*/
}
}

5.1.4、问题三:SPI写入时序(配置模式)

        写入时序与读取时序类似只是以16bit为一次串口数据传输,一定要注意传入的值第一次是无效的。

5.1.5、问题四:初始化问题

        初始化是有严格的时序的,如果没有正确控制上电复位时序,可能会导致位置指示不正确。

        初始化时序图如下

        正常通过逻辑分析仪测试出来的波形如下图,注意一下tTRACK,这个时间参数很重要,直接影响了采样分辨率。

5.1.6、问题五:SAMPLE管脚

        采样管脚的下降沿用于锁存位置,产生下降沿之后,只有用SPI读取了位置信息才会再次进行更新。

5.1.7、问题六:故障寄存器0xFF、复位寄存器0xF0

        故障寄存器0xFF与复位寄存器0xF0是例外,故障寄存器0xFF不遵从问题二,复位寄存器0xF0问题三的规则,故障寄存器只需要用读取8bit数据0xFF即可实现读取故障,复位寄存器只需要写入8bit数据0xF0即可实现复位。

5.1.8、问题七:普通模式

        普通模式下,通过IO口A0与A1进行设置的,如下图选择

        普通模式下输出速度或者位置信息,包含故障信息,此时无需写入寄存器地址,通过SPI的读取函数传输16bit的任意数据得到的是速度或者位置信息,若是24bit的任意数据则是包含8bit的故障信息,一般来说使用16bit毕竟节省时间,DOS与LOT管脚会指示故障,当指示了故障再进入配置模式读取8bit的故障寄存器即可,毕竟故障只是少数时间内产生。

5.2、常见问题分析

5.2.1、变比问题

        EXC+与EXC-两者属于差分信号,两者的峰峰值在项目里面一般是正负5V,通过变比出来的sin+-,cos+-应该在手册给定的范围内。

        EXC+、 EXC-输出

  

        给到AD2S1210的信号电压峰峰值应该在下图范围内,超过的话就会报警了。

        在实际调试的时候一定要注意变比的问题。

5.2.2、削波故障

        **问题描述**:削波故障通常是因为输入信号的单端信号低于0.15V或高于4.8V,导致芯片无法正确处理信号。

削波故障如下图

        **解决方法**:确保输入信号的差分峰峰值在2.3V至4V之间。如果测量的峰峰值为2.4V,检查电路设计是否正确,确保信号在规定的范围内。

5.2.3、锁相故障

        - **问题描述**:锁相故障通常表现为角度值跳动范围大,可能由于激励信号滤波、旋转变压器或SIN/COS输入滤波器导致的延迟超出了44°。

        - **解决方法**:检查并调整激励信号滤波器的截止频率,确保其不会对信号造成过大的相移。如果系统中滤波器的截止频率对10KHz的信号相移过大,建议将截止频率放宽到50KHz左右,并进行实际仿真以观察延迟。

5.2.4、SPI通信故障

        - **问题描述**:在读取SPI数据时,与预期结果不符,可能由于时序问题或配置错误。

        - **解决方法**:检查SPI通信的时序设置,确保数据的读取和写入时序正确。如果问题依旧存在,检查GPIO配置是否正确,特别是采样保持次数的配置(针对DSP28335之类的芯片)。

5.2.5、故障寄存器读取问题

        - **问题描述**:在读取故障寄存器时,可能遇到读取数据不正确的情况。

        - **解决方法**:按照正确的时序和方法读取故障寄存器。例如,使用配置模式下读取故障寄存器,确保按照正确的步骤操作,如先写入控制寄存器地址,然后读取控制寄存器的值。参见5.1.3章节。

5.2.6、数据处理错误

        - **问题描述**:在处理从AD2S1210读取的数据时,可能出现数据处理错误。

        - **解决方法**:确保在软件中正确处理数据,包括位移操作和数据组合。例如,对于16位编码器分辨率,可能需要将高8位和低8位的数据组合成一个完整的16位数据。取出来的数据选择高位,别忘记移位操作。完整的16位数据。取出来的数据选择高位,别忘记移位操作。

5.2.7、硬件连接问题

        - **问题描述**:硬件连接错误或不稳固可能导致故障。

        - **解决方法**:检查所有硬件连接,包括旋转变压器的连接、AD2S1210的电源连接以及SPI通信接口的连接。确保所有连接正确无误,并且牢固可靠。

6、代码链接

        此代码属于在网上搜集的,包含了官方的与GitHub上收藏量比较高的,代码很原始,查看其实现逻辑比较重要,里面有五个文件夹分别对应五个例子。

AD2S1210例程(官方与GitHub)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2142156.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

canal消费binlog异常排查

canal简介 canal是一款优秀的订阅MySQL binlog的中间件&#xff0c;在MySQL异构数据到其它存储平台领域非常的实用好用。而且在数据表的迁移中也可以用canal订阅&#xff0c;然后将更新实时同步到新表。 原理 canal部署后伪装为一个MySQL slave节点向DB发起同步binlog请求&am…

Istio下载及安装

Istio 是一个开源的服务网格&#xff0c;用于连接、管理和保护微服务。以下是下载并安装 Istio 的步骤。 官网文档&#xff1a;https://istio.io/latest/zh/docs/setup/getting-started/ 下载 Istio 前往Istio 发布页面下载适用于您的操作系统的安装文件&#xff0c;或者自动…

系统架构-面向对象

有对象和没对象一样&#xff0c;鉴于今天中秋节 所以明天姐姐我就恢复单身了&#xff0c;忍这几个小时也没关系&#xff0c;一点不重要了

『功能项目』伤害数字UI显示【53】

我们打开上一篇52眩晕图标显示的项目&#xff0c; 本章要做的事情是在Boss受到伤害时显示伤害数字 首先打开Boss01预制体空间在Canvas下创建一个Text文本 设置Text文本 重命名为DamageUI 设置为隐藏 编写脚本&#xff1a;PlayerCtrl.cs 运行项目 本章做了怪物受伤血量的显示UI…

iOS 18 新功能:控制中心大變身!控制項目自由選配

蘋果於 Apple iOS 18 中為控制中心帶來大改變&#xff0c;變得更具有擴充性&#xff0c;而且將支援第三方應用的控制按鈕&#xff0c;中心內的組件大小也可調節。如今 iOS 18 正式上線&#xff0c;我們就可以試試控制中心不同項目自由選配帶來的效果。 組件可在三尺寸之間調整 …

十五、谷粒商城- 报错汇总

&#x1f33b;&#x1f33b;目录&#x1f33b;&#x1f33b; 一、谷粒商城- 分布式基础&环境搭建&#xff08;1&#xff09;1.1 项目构建完clean报错1.2 idea安装插件报错 二、谷粒商城- 快速开发之Spring Cloud Alibaba&#xff08;2&#xff09;2.1 配置完renren-fast 启…

园林建筑物类型检测系统源码分享

园林建筑物类型检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Comput…

Simulink仿真理想二极管模型

Simulink仿真理想二极管模型 二极管的伏安特性曲线测量 可通过实验的方法测量得到二极管(Diode)的外部特性&#xff0c;即伏安特性曲线&#xff0c;图(a)为二极管正向特性测试电路&#xff0c;P区接电源的正极&#xff0c;N区接电源的负极&#xff0c;这种接法称为PN结正向偏…

python贪吃蛇游戏项目源码【免费】

使用Pygame库实现的贪吃蛇游戏。Pygame是一个用于创建视频游戏的Python模块集合&#xff0c;它提供了图形和声音库&#xff0c;使游戏开发变得容易。 初始化设置 屏幕大小 (SCREEN_WIDTH, SCREEN_HEIGHT): 定义了游戏窗口的宽度和高度。方格大小 (SIZE): 定义了游戏中每个小方…

【Linux基础】冯诺依曼体系结构操作系统的理解

目录 前言一&#xff0c;冯诺依曼体系1. 为什么有内存结构?2. 对硬件中数据流动的再理解 二&#xff0c;操作系统(Operator System)1. 概念2. 操作系统结构的层状划分3. 操作系统对硬件管理的理解4. 用户与操作系统的关系的理解5. 系统调用和库函数的关系6. 为什么要有操作系统…

深入解析 Cursor:AI 驱动的编程工具与应用示例

慢慢理解世界&#xff0c;慢慢更新自己。 随着人工智能&#xff08;AI&#xff09;技术的发展&#xff0c;编程工具也在不断进化&#xff0c;力求为开发者提供更加智能化的辅助体验。Cursor 就是这样一款结合 AI 技术的编程工具&#xff0c;它不仅能够帮助开发者快速编写、优化…

mimd 公平收敛在相图中的细节

aimd 的收敛已经说腻了&#xff0c;我曾经画了好几次相图。有朋友希望我能画一个 mimd 相图&#xff0c;我就再画一个稍微详细的。 下面相图收敛到稳定点的前提异步 mimd&#xff1a; 之所以要异步&#xff0c;举个例子&#xff0c;在执行 gx 时&#xff0c;要确保 y 已经执…

关于一道逻辑思维训练题的理解(手表、闹钟、标准时间的骗局)

说有一块手表&#xff0c;比闹钟每时慢30秒&#xff0c;而闹钟比标准时间每时快30秒&#xff0c;那么&#xff0c;这块手表是准时的么 &#xff1f; 这道题就是个带时间刻度的四维骗局 就是个文字游戏 接下来我们来分析一下&#xff0c;为什么说它是个骗局&#xff0c;简直与…

Leetcode 缺失的第一个正整数

题目意思是找出第一个没出现的最小正整数。 Explanation: Move Numbers to Correct Positions: The idea is to place each number in its corresponding index. For example, 1 should be at index 0, 2 should be at index 1, and so on. This is done using a while loop t…

道路裂缝,坑洼,病害数据集-包括无人机视角,摩托车视角,车辆视角覆盖道路

道路裂缝&#xff0c;坑洼&#xff0c;病害数据集 包括无人机视角&#xff0c;摩托车视角&#xff0c;车辆视角 覆盖道路所有问题 一共有八类16000张 1到7依次为: [横向裂缝, 纵向裂缝, 块状裂缝, 龟裂, 坑槽, 修补网状裂缝, 修补裂缝, 修补坑槽] 道路病害&#xff08;如裂缝、…

【C++】—— list 模拟实现

【C】—— list 模拟实现 1 list 基础结构2 默认构造3 迭代器3.1 整体框架3.2 成员函数3.3 begin() 与 end() 的实现3.4 operator-> 的实现3.5 const 迭代器3.5.1 const 迭代器为什么命名 const_iterator3.5.2 const 迭代器的实现3.5.3 合并两个迭代器 4 源码 1 list 基础结…

“RISCV+AI”

概述 设计方案 主要有两种设计方案。 RISCV核ASIC RISCV核是标准的基于RISCV指令集的CPU设计&#xff0c;ASIC部分通常是基于RISCV自带的向量扩展指令集构建的向量处理器&#xff0c;或是自定义的矩阵计算单元。 根据CPUAI ASIC部件的接口可以分为紧耦合和松耦合的设计1。 …

OpenCVHaar级联器实现人脸捕捉和微笑检测

概念 Haar 级联分类器是由多个简单分类器组成的复杂分类器&#xff0c;每个简单分类器都由 Haar 特征训练得到。Haar 级联器因其简单和快速而被应用于某些场景。OpenCV 提供多种预训练的 Haar 特征级联分类器&#xff0c;其已经在大量图像上进行了训练&#xff0c;并且针对特定…

【Ubuntu】虚拟机安装USB摄像头ROS驱动 usb_cam(最新方法)

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

宝塔Linux部署 Vue + Spring Boot + MySQL + Redis

服务器安装宝塔 不同的服务器操作系统对应着不同的安装命令。这里我用的是centos8.6&#xff0c;所以安装命令是 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 注意安装宝塔面板时&#xff0…