STM32F103软件I2C读取角度传感器AS5600角度信息
I2C我用的例程,器件地址为0x36,角度信息在寄存器0x0c,0x0d
直接上代码
# include "AS5600.H"
# include "delay.h"
# include "sys.h"void AS5600_Init(void)
{IIC_Init();
}u16 AS5600_Read_Len(u8 addr,u8 reg,u8 len,u8 *buf)
{//SDA_IN();IIC_Start();IIC_Send_Byte((addr << 1) | Write_Bit);if (IIC_Wait_Ack()){IIC_Stop();return 1;}IIC_Send_Byte(reg);IIC_Wait_Ack();IIC_Start();IIC_Send_Byte((addr<<1) | Read_Bit);//发送器件地址+读命令IIC_Wait_Ack(); //等待应答 while(len){if(len==1)*buf=IIC_Read_Byte(0);//读数据,发送nACK else *buf=IIC_Read_Byte(1); //读数据,发送ACK len--;buf++; } IIC_Stop(); //产生一个停止条件 return 0; }float Get_Angle(void)
{u8 buf[2] = {0};u8 i = 0;float temp = 0;float temp1 = 0.0;for (i = 0; i < 20; i++){AS5600_Read_Len(Slave_Addr,Angle_Hight_Register_Addr,2,buf);temp1 +=buf[0]*256+buf[1];delay_ms(5);//temp = (((u16)buf[0] & (0x0f00)) << 8) | buf[1];}//软件滤波,防止数据不稳定temp = temp1/20;return temp/4096*360;}
AS5600.H
# ifndef __AS5600_H
# define __AS5600_H
# include "I2C.H"# define Slave_Addr 0x36
# define Write_Bit 0
# define Read_Bit 1
# define Angle_Hight_Register_Addr 0x0C
# define Angle_Low_Register_Addr 0x0Dvoid AS5600_Init(void);
u16 AS5600_Read_Len(u8 addr,u8 reg,u8 len,u8 *buf);
float Get_Angle(void);# endif
之后直接用串口打印Get_Angle()函数即可
STM32F103软件I2C读取角度传感器AS5600角度信息相关推荐
- SPI驱动XPT2046芯片读取其内部ADC信息笔记
前言 这次来复习一下SPI以及ADC的有关知识,之前介绍到的磁编码器也是基于SPI协议通信才能读取其内部角度信息,ADC就更不用说了,在电压检测,电机驱动的方面都会涉及到采样量化编码的知识,趁此机会好 ...
- 基于ESP32 IDF开发FOC(1)-AS5600角度读取
AS5600角度读取 1.相关定义 #define As5600_Addr 0x36 #define RawAngle_Addr 0x0C#define I2C_WRITE_MODE 0 #defin ...
- SimpleFOC(三)—— AS5600角度读取
目录 一.硬件介绍 1.磁编码器说明 2.硬件连接 二.程序演示 1.模拟电压获取角度 2.I2C通信获取角度 三.程序拓展 SimpleFOC的教程比较多,做了一个总的链接,欢迎点击阅读:Simpl ...
- RT Thread Studio 配置IIC并读取AS5600角度
RT Thread Studio 配置IIC并读取AS5600角度 一.RT Thread Studio 配置IIC 1.在RT Thread Seting 中开启IIC功能 并保存 一定要保存才能更 ...
- stm32软件模拟I2C读取ADXL345三轴加速度值
最近做一个实验室里的小项目,需要用stm32来读取ADXL345三轴加速度的值,本来硬件I2C都调好了,可是后来和实验室合作的一个公司给的板子却没把硬件I2C的端口给引出来,太伤心了,我又得重新调一下 ...
- STM32单片机硬件I2C读取AHT10温湿度传感器数据
STM32使用硬件IIC读取AHT10温湿度传感器的数据并显示在0.96寸OLED屏上. 我用的单片机是STM32F103C8T6,程序用的是ST标准库写的. STM32使用硬件I2C读取SHTC3温 ...
- STM-32:I2C通信协议—软件I2C读写MPU6050
目录 一.I2C通信 二.硬件电路 三.I2C时序基本单元 3.1起始和终止 3.1.1起始条件 3.1.2终止条件 3.2发送一个字节 3.3接收一个字节 3.4发送应答 3.5接收应答 四.I2C ...
- 【UGV】Arduino Mega2560 获取小车角度信息,传感器JY60
详细版原理图请参考:[UGV]小车一些图片 麦轮版小车 示例程序如下: 使用的是 Mega2560 的 3 号串口读取了 JY60 角度传感器传回来的的角度信息,然后通过 1 号串口在电脑上进行了显示 ...
- 【51单片机快速入门指南】4.3: I2C读取MPU6050陀螺仪的原始数据
目录 硬知识 特性参数 MPU6050 简介 模块重要寄存器简介 电源管理寄存器 1 陀螺仪配置寄存器 加速度传感器配置寄存器 FIFO 使能寄存器 陀螺仪采样率分频寄存器 配置寄存器 电源管理寄存器 ...
最新文章
- atomic与nonatomic,assign,copy与retain的定义和区别
- h3c 3600 交换机配置Telnet登录
- 高级会计师资格考试成绩合格证在全国范围内几年有效
- sprintf函数_三分钟学 Go 语言——函数深度解析(下) 可变参数
- 数据结构和数据类型之间的关系
- ASP.NET技巧:字符自动截取问题
- 关于灵魂安放,年轻人如何选择适合自己的城市呢?学长有话说
- redis笔记5 stream消息队列
- 大兴服务器硬盘回收行情价格,回收服务器 硬盘 内
- C++小游戏——打方块
- Flutter 旋转动画
- java 获取当前月的第一天和最后一天
- python开发单片机仿真软件_开源电子电路仿真模拟软件,加油国产芯片
- 【C语言】飞翔的小鸟游戏
- CC00070.bigdatajava——|Java循环结构.V09|——|Java.v09|双重for循环.v02|打印各种星星图案|
- 【BZOJ1014】【JSOI2008】火星人prefix Splay处理区间,hash+dichotomy(二分)check出解...
- cgb2109-day02
- 用python写bp神经网络作价格预测_bp神经网络预测python
- Codeforces Round #644 (Div. 3) F.Spy-string
- 计算机能力挑战2021,2021WER能力挑战赛——“人工智能”竞赛规则.docx
热门文章
- Ubuntu14.04 安装使用rabbitSVN
- SSIS中的容器和数据流—数据转换(Transformations)
- 斐波那契数列 递归算法
- java 整数除法整数_Java:整数除法
- oracle数据库报错12505,Oracle SQL Developer连接报错(ORA-12505)的解决方案(两种)
- 领导问结婚情况什么意思_领导者如何在没有共识的情况下前进
- 重启linux服务器连不上,linux服务器重启后ssh连不上了
- 未来趋势(老年用品店)
- UVA 1659 Help Little Laura 帮助小劳拉 (最小费用流,最小循环流)
- https证书存在哪里?部署https证书的意义