DSP28335使用SPI从AD2S1210(旋变芯片)读取位置

这篇具有很好参考价值的文章主要介绍了DSP28335使用SPI从AD2S1210(旋变芯片)读取位置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

精准的转子位置对于电机精确控制来说至关重要,利用旋转变压器获取转子位置角度是一种常见方案。因此在电控程序中只需要通过主控芯片(以DSP28335为例)与旋变解码芯片(以AD2S1210为例)进行通信(以SPI通信为例)。

问题描述

在实际操作中,通过SPI从旋变芯片读取绝对位置时,读取到的位置有效位的最高位始终是1。

解决方案

在经过大量实验后发现,是对28335SPI的SpiaRegs.SPICCR.bit.CLKPOLARITY位设置错了。因为在AD2S1210的数据手册中对于串行数据的传输是这样说明的:
ad2s1210官方例程用28335,单片机,dsp开发,c语言
导致我误以为主控芯片需要在时钟上升沿将数据移入,然而实际情况是数据在时钟上升沿从旋变芯片移出后需要保持半个时钟周期,随后主控芯片在下降沿再将数据移入。否则就可能会出现前述情况或者其他问题。

其他注意事项

时序

需要对照具体的旋变芯片数据传输时序图进行正确的配置,例如我使用的旋变芯片在普通模式下的时序图是这样的:
ad2s1210官方例程用28335,单片机,dsp开发,c语言
因此对应代码如下:文章来源地址https://www.toymoban.com/news/detail-644691.html

void SPI_GetPos(void)
{
    SAMPLE_ENABLE;
    asm(" RPT #100 ||NOP");
    asm(" RPT #200 ||NOP");
    WR_ENABLE;
    asm(" RPT #50 ||NOP");
    SPI_Send(0x00);
    while(!SpiaRegs.SPISTS.bit.INT_FLAG){};
    SPI_RX = (SpiaRegs.SPIRXBUF>>4);
    asm(" RPT #50 ||NOP");
    WR_DISABLE;
    SAMPLE_DISABLE;
    asm(" RPT #50 ||NOP");
}

到了这里,关于DSP28335使用SPI从AD2S1210(旋变芯片)读取位置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DSP28335学习笔记:定时器中断

    F28335的CPU定时器有3个且均为32位,分别是Timer0、Timer1、Timer2, 其中 Timer2 是为操作系统 DSP/BIOS 保留的,当未移植操作系统时,可用来做普 通的定时器。这三个定时器的中断信号分别为 TINT0,TINT1,TINT2,分别对应于中断向量 INT1,INT13,INT14。 一、F28335定时器介绍(CPU定时器)

    2024年04月10日
    浏览(44)
  • 基于DSP28335的CAN通信(附代码)

    在学DSP28335的时候由于寄存器数量多且配置复杂,网上各路大神给出的代码基本上都不太能跑的通(可能是我移植的时候有些寄存器没配置好),所以在看了好几遍官方数据手册并且自己动手写了一遍代码之后,将一些容易错的地方记录了下来,文末也附上了一份代码,希望能对

    2024年02月11日
    浏览(57)
  • STM32-SPI1控制AD7705(Sigma-Delta-ADC芯片)

    该芯片需要晶振(Y2)和参考电源电压(U3) AD7705与国产TM7705型号差不多,也就是可以参考国产的手册。 AD7705利用 Σ-Δ 转换技术实现了 16 位无丢失代码性能。选定的输入信号被送到一个基于模拟调制器的增益可编程专用前端。片内数字滤波器处理调制器的输出信号。通过片

    2024年02月19日
    浏览(37)
  • DSP28335学习笔记-产生PWM波 ——从应用角度出发

    关于DSP28335的书籍有很多,但都是从乏味的寄存器开始入手。对于新手可能不是很友好,因此关于DSP的学习记录我打算从应用入手去学习寄存器的用法和配置。 此次实验用J4模块引脚的XPWM1和XPWM2分别产生ePWM1A和ePWM1B,对应芯片GPIO0和GPIO1引脚。 黄色线为EPWM1A,紫色线为EPWM1B。

    2024年02月06日
    浏览(35)
  • STM32模拟SPI协议获取24位模数转换(24bit ADC)芯片AD7791电压采样数据

    STM32大部分芯片只有12位的ADC采样性能,如果要实现更高精度的模数转换如24位ADC采样,则需要连接外部ADC实现。AD7791是亚德诺(ADI)半导体一款用于低功耗、24位Σ-Δ型模数转换器(ADC) ,适合低频测量应用,提供50 Hz/60 Hz同步抑制。 这里介绍基于AD7791的24位ADC采样实现。 AD7791的管脚

    2024年02月09日
    浏览(58)
  • [DSP学习笔记]基于TMS320F28335的FIR滤波实现

    首先进入TI官网,搜索C2000 wave,进行下载安装。 安装完成后,在2000 wave的安装目录下,进入以下目录:C2000Ware_4_02_00_00librariesdspFPUc28 以我本地的安装目录为例:E:tic2000C2000Ware_4_02_00_00librariesdspFPUc28 复制include、source文件夹到新建工程中。再根据选用的DSP型号对文件夹内

    2024年02月10日
    浏览(80)
  • 音频——I2S DSP 模式(五)

    I2S 基本概念 飞利浦(I2S)标准模式 左(MSB)对齐标准模式 右(LSB)对齐标准模式 DSP 模式 TDM 模式 DSP/PCMmode 分为 Mode-A 和 Mode-B 共 2 种模式。不同芯⽚有的称为 PCM mode 有的称为 DSP mode。PCM 只有⼀个起始信号,先传输左声道后传输右声道。 Mode-A 数据在第 1 个 BCLK 脉冲处 上升沿数据有

    2024年02月09日
    浏览(42)
  • Simulink嵌入式自动代码生成DSP 28335/28035/28x系列 (1)——官方例程(1)讲解 {ADC-PWM同步中断}

    本人了解到电动汽车中 OBC和 DCDC 普遍使用TI (德州仪器)DSP 28335和 28035系列芯片 做开关电源控制,电源领域的 工程师 需要对于芯片的配置和 配套软件Code Composer Studio (CCS)有一定的熟悉程度,具体涉及到C语言的编写和 代码管理。在如今追求时效的大环境下, 手打代码

    2023年04月09日
    浏览(47)
  • AD(DA)芯片PCF8591使用介绍

    AD (DA)芯片PCF8591简介       PCF8591是具有I2C 总线接口的8 位A/D 及D/A 转换器。PCF8591有4个模拟输入、1个模拟输出和1个I²C 总线接口 。PCF8591有3个地址 引脚 A0, A1和A2,用于硬件地址设定,这允许在一条I2C总线上接入8个PCF8591器件。       PCF8591 实物如下图所示: AD (DA)芯片P

    2024年02月01日
    浏览(37)
  • 【STM32L496】使用HAL库实现SPI写入/读取数据(AD5421)

    SPI协议详解(图文并茂+超详细) SPI超详细解析 【STM32笔记】HAL库中的SPI传输(可利用中断或DMA进行连续传输) AD5421是一款集成器件,设计用于环路供电型4-20mA智能发射器应用。AD5421在单芯片内提供如下特性和功能:16位DAC和电流放大器,用于对环路电流进行数字控制;用于

    2024年02月03日
    浏览(75)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包