SPI读取TLE5012B编码器角度数据_ACM32G103

买到一个带编码器的电机,卖家留出来读取编码器数据的接口有SPI
具体的原理图如下:
在这里插入图片描述
P2标注的是SPI的接口,其中MISO和MOSI是硬件连接到一起的
使用ACM32G103的硬件SPI2去读取其角度数据
原理大概如下:
1、先发送读取数据的指令,然后再接收数据,一个半双工通信的过程
2、因为MOSI和MISO硬件上连接到了一起,根据TLE5102B的通信时序要求就要稍微修改一下MOSI引脚的状态,片选使用软件片选
3、SPI2的配置CPOL=0,CPHA=1
4、SPI2引脚:
PB9 CS AF3
PB8 SCK AF3
PB7 MOSI AF3
PB6 MISO AF3
其中CS的初始化要修改一下,要初始化为GPIO
接下来直接看代码

#define SPI_USE SPI2
void SPI_USE_Transfer_OneByte(uint8_t *sdata,uint16_t ssize)
{/* Clear Batch Done Flag  */SET_BIT(SPI_USE->STATUS, SPI_STATUS_TX_BATCH_DONE);SET_BIT(SPI_USE->STATUS, SPI_STATUS_BATCH_DONE);/* Clear TX FIFO */SET_BIT(SPI_USE->TX_CTL, SPI_TX_CTL_FIFO_RESET);CLEAR_BIT(SPI_USE->TX_CTL, SPI_TX_CTL_FIFO_RESET);/* Set Data Size */SPI_USE->BATCH = ssize;/* Tx Enable */SPI_USE->TX_CTL |= SPI_TX_CTL_EN;/* Transmit Start */SPI_USE->CS |= SPI_CS_CS0;while(ssize > 0){while (SPI_USE->STATUS & SPI_STATUS_TX_FIFO_FULL){}SPI_USE->DAT = *sdata;sdata++;ssize--;}while (!(SPI_USE->STATUS & SPI_STATUS_TX_BATCH_DONE)){}/* Clear Batch Done Flag  */SET_BIT(SPI_USE->STATUS, SPI_STATUS_TX_BATCH_DONE);SET_BIT(SPI_USE->STATUS, SPI_STATUS_BATCH_DONE);/* Tx Disable */SPI_USE->TX_CTL &= (~SPI_TX_CTL_EN);SPI_USE->CS &= (~SPI_CS_CS0);
}void SPI_USE_Receive_OneByte(uint8_t *rdata,uint16_t rsize)
{/* Clear Batch Done Flag  */SET_BIT(SPI_USE->STATUS, SPI_STATUS_RX_BATCH_DONE);SET_BIT(SPI_USE->STATUS, SPI_STATUS_BATCH_DONE);/* Set Data Size */SPI_USE->BATCH = rsize;/* Rx Enable */SPI_USE->RX_CTL |= SPI_RX_CTL_EN;/* Receive Start */SPI_USE->CS |= SPI_CS_CS0;while(rsize > 0){/* Wait Rx FIFO Not Empty */while (SPI_USE->STATUS & SPI_STATUS_RX_FIFO_EMPTY){}*rdata = 	SPI_USE->DAT;rsize--;rdata++;}/* Wait Transmit Done */while (!(SPI_USE->STATUS & SPI_STATUS_RX_BATCH_DONE));/* Clear Batch Done Flag  */SET_BIT(SPI_USE->STATUS, SPI_STATUS_RX_BATCH_DONE);SET_BIT(SPI_USE->STATUS, SPI_STATUS_BATCH_DONE);/* Rx Disable */SPI_USE->RX_CTL &= (~SPI_RX_CTL_EN);/* Receive End */SPI_USE->CS &= (~SPI_CS_CS0);
}

再来看读取角度的过程

//        TxBuffer[0] = 0x80;
//	      TxBuffer[1] = 0x21;		
GPIOB->BSC = GPIO_PIN_9 << 16U;
PB7_OUTPUT();			
SPI_USE_Transfer_OneByte(TxBuffer,2);					
PB7_INPUT();
SPI_USE_Receive_OneByte(RxBuffer,2);				
GPIOB->BSC = GPIO_PIN_9;
Angle= (RxBuffer[0]<<8 | RxBuffer[1])&0x7FFF;		

每次发送完读取数据的指令之后,因为MOSI和MISO硬件连接到一起,我们就要将MOSI引脚由复用为SPI设置为输入状态,下一次发指令的时候重新复用为SPI
其中将MOSI引脚设置成输入和复用的代码如下

void PB7_INPUT(void)
{GPIOB->MD  &= ~(3<<14);
}void PB7_OUTPUT(void)
{GPIOB->AF0 |= GPIO_FUNCTION_3 << 28;GPIOB->DS0 |= GPIO_DRIVE_LEVEL3 <<28;GPIOB->OTYP &= (~GPIO_PIN_7);GPIOB->PUPD |= GPIO_PULLUP<<14;GPIOB->MD |= GPIO_MODE_AF_PP<<14;
}

读取速度,TLE5012B推荐的SPI速率最大是8M,可以根据实际情况提高,也能读到数据

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

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

相关文章

.NET高级面试指南专题十六【 装饰器模式介绍,包装对象来包裹原始对象】

装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;用于动态地给对象添加额外的职责&#xff0c;而不改变其原始类的结构。它允许向对象添加行为&#xff0c;而无需生成子类。 实现原理&#xff1a; 装饰器模式通过创建一个包装对象来包裹原…

Mysql命令行客户端

命令行客户端 操作数据库操作数据表 操作数据库 mysql> create database mike charsetutf8; Query OK, 1 row affected (0.01 sec) mysql> show databases; -------------------- | Database | -------------------- | information_schema | | mike …

ARM基础----STM32处理器操作模式

STM32处理器操作模式 Cortex-M处理器操作模式、特权等级和栈指针操作模式栈指针CONTROL寄存器异常压栈时的SP指针 Cortex-A 处理器运行模型寄存器组 Cortex-M处理器操作模式、特权等级和栈指针 操作模式 处理模式&#xff1a;执行中断服务程序等异常处理&#xff0c;处理器具有…

STM32FreeRTOS信号量(STM32cube高效开发)

一、信号量 &#xff08;一&#xff09;信号量概括 信号量是操作系统中重要的一部分&#xff0c;信号量是一种解决同步问题的机制&#xff0c;可以实现对共享资源的有序访问。 FreeRTOS 提供了多种信号量&#xff0c;按信号量的功能可分为二值信号量、计数型信号量、互斥信…

WPF Interaction

使用 Interaction 里面的方法来将事件映射到ViewModel层 引用命名空间&#xff1a;System.Windows.Interactivity.dll 在xaml界面引用这两种任意一个就行&#xff0c;这两个做的事情是相同的。 xmlns:i"clr-namespace:System.Windows.Interactivity;assemblySystem.Win…

宽度优先搜索算法(BFS)

宽度优先搜索算法&#xff08;BFS&#xff09;是什么&#xff1f; 宽度优先搜索算法&#xff08;BFS&#xff09;&#xff08;也称为广度优先搜索&#xff09;主要运用于树、图和矩阵&#xff08;这三种可以都归类在图中&#xff09;&#xff0c;用于在图中从起始顶点开始逐层…

uVeiw color 颜色值

此功能为uView内部通过js提供的一些颜色值&#xff0c;可以用于通过js修改元素字体&#xff0c;背景颜色等一些场景&#xff0c;常用于uView的各个组件中。 这些颜色值&#xff0c;挂载在$u对象下的color数组中&#xff0c;关于这些颜色值的具体描述&#xff0c;详见Color 色彩…

指针--2

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言1.指针运算1.1.指针-整数1.2.指针-指针1.3.指针的关系运算 2.野指针2.1 野指针成因2.2 如何规避野指针 3.assert 断言4.指针的使用和传址调用4.1 strlen的模拟实…

模型训练中数据标注是什么意思?

问题&#xff1a; 模型训练中数据标注是什么意思&#xff1f; 解答 在机器学习和深度学习领域中&#xff0c;数据标注是指对原始的、未经处理的数据&#xff08;如图像、文本、音频、视频或3D点云&#xff09;进行人工标记的过程。这个过程为每一份数据赋予一个明确的标签或…

nn.Conv2d()中的groups分组参数

1.参考文章&#xff1a; 【Pytorch】搞懂nn.Conv2d的groups参数的作用 - 知乎 (zhihu.com) 2.理解&#xff1a; &#xff08;1&#xff09;只要你 明白了 多通道的卷积是如何实现的&#xff08;可以看我的1X1卷积文章&#xff09;&#xff0c;那么这里的分组进行卷积就非常好…

bat 调用bat 等待执行完成

在Windows批处理&#xff08;.bat&#xff09;文件中&#xff0c;如果你需要调用另一个批处理文件并等待它执行完成后再继续执行后续命令&#xff0c;可以使用 call 命令来实现。call 命令会启动新的批处理文件&#xff0c;并在子脚本执行完毕后返回到父脚本来执行余下的命令。…

【Tauri】(4):整合Tauri和actix-web做本地大模型应用开发,可以实现session 登陆接口,完成页面展示,进入聊天界面

1&#xff0c;视频地址 https://www.bilibili.com/video/BV1GJ4m1Y7Aj/ 【Tauri】&#xff08;4&#xff09;&#xff1a;整合Tauri和actix-web做本地大模型应用开发&#xff0c;可以实现session 登陆接口&#xff0c;完成页面展示&#xff0c;进入聊天界面 使用国内代理进行加…

软考笔记--软件可靠性评价

一.软件可靠性评价概述 软件可靠性评价是软件可靠性活动的重要组成部分&#xff0c;即适用于软件开发过程&#xff0c;也可以针对最终软件系统。在软件开发过程中使用软件可靠性评价&#xff0c;可以使用软件可靠性模型&#xff0c;估计软件当前的可靠性&#xff0c;以确认是否…

6-DOF GraspNet: Variational Grasp Generation for Object Manipulation

总结&#xff1a; 使用变分自动编码器(VAE)对抓取进行采样&#xff0c;并使用基于点网的抓取评估器模型对采样的抓取进行评估和细化 摘要&#xff1a; 我们将抓取生成问题表述为 使用变分自编码器对一组抓取进行采样&#xff0c;并使用抓取评 估器模型对采样的抓取进行评估和…

备考2024年小学生古诗文大会:历年真题15题练习和独家解析

如何提高小学生古诗词的知识&#xff1f;如何激发小学生古诗词的学习兴趣&#xff1f;如何提高小学古诗词的学习成绩&#xff1f;如何备考2024年小学生古诗文大会&#xff1f;...如果你也在关心和这些问题&#xff0c;我的建议是参加每年一度的小学生古诗词大会&#xff08;免费…

亚马逊跨境电商名词解释

亚马逊界面名词解释 最常用的名词解释总结&#xff1a; ASIN&#xff1a;亚马逊标准标识号,也就是每个商品的编码标识,每个商品的都不同&#xff0c;可以把它当成该商品的“身份证号”。由亚马逊随机生成的字母数字组合。 SKU&#xff1a;库存进出计量单位。 Listing&#xf…

太强了!最全的大模型检索增强生成(RAG)技术概览!

本文是对检索增强生成&#xff08;Retrieval Augmented Generation, RAG&#xff09;技术和算法的全面研究&#xff0c;对各种方法进行了系统性的梳理。文章中还包含了我知识库中提到的各种实现和研究的链接集合。 鉴于本文的目标是对现有的RAG算法和技术进行概览和解释&#…

django学习记录07——订单案例(复选框+ajax请求)

1.订单的数据表 1.1 数据表结构 1.2 数据表的创建 models.py class Order(models.Model):"""订单号"""oid models.CharField(max_length64, verbose_name"订单号")title models.CharField(max_length64, verbose_name"名称&…

做跨境电商,选哪个浏览器好?跨境电商浏览器推荐

在我们的日常生活中&#xff0c;有很多浏览器可供选择&#xff0c;比如百度浏览器、谷歌浏览器和360、火狐等等。但是在跨境电商行业中&#xff0c;是否有特别适合我们卖家使用的浏览器呢&#xff1f;所谓跨境电商浏览器&#xff0c;就是为跨境电商用户设计的浏览器&#xff0c…

Unity 采用自定义通道ShaderGraph实现FullScreen的窗户雨滴效果

效果如下 ShaderGraph实现 N21 随机化 DragLayer分层 将DragLayer分成四层&#xff0c;分别调整每层的缩放和大小 Shader实现的链接&#xff08;Unity 雨水滴到屏幕效果&#xff09; 我也是参考这个实现Shader Graph