基于ESP32 IDF开发FOC(1)-AS5600角度读取
AS5600角度读取
1.相关定义
#define As5600_Addr 0x36
#define RawAngle_Addr 0x0C#define I2C_WRITE_MODE 0
#define I2C_READ_MODE 1
#define ACK 0 /*!< I2C ack value */
#define NACK 1 /*!< I2C nack value */
#define ACK_CHECK_ENABLE 1
#define ACK_CHECK_DISABLE 0
2.IIC驱动编写
初始化程序:
esp_err_t As5600_Init(int sda_io, int scl_io)
{esp_err_t result;i2c_config_t conf = {.mode = I2C_MODE_MASTER,.sda_io_num = sda_io,.sda_pullup_en = GPIO_PULLUP_ENABLE,.scl_io_num = scl_io,.scl_pullup_en = GPIO_PULLUP_ENABLE,.master.clk_speed = 100000,};result = i2c_param_config(I2C_NUM_0, &conf);if (result != ESP_OK){return result;}//安装驱动return i2c_driver_install(I2C_NUM_0, conf.mode, 0, 0, 0);
}
读取原始角度,高位信息在0x0c,低位信息在0x0d,移位时需要注意。
void ReadAngle()
{uint8_t angle_high = 0;uint8_t angle_low = 0;uint16_t result = 0;float angle=0;i2c_cmd_handle_t cmd;//读取HighAddrcmd = i2c_cmd_link_create();i2c_master_start(cmd);i2c_master_write_byte(cmd, As5600_Addr << 1 | I2C_WRITE_MODE, ACK_CHECK_ENABLE);i2c_master_write_byte(cmd, RawAngle_Addr, ACK_CHECK_ENABLE);i2c_master_stop(cmd);i2c_master_cmd_begin(I2C_NUM_0, cmd, 1000 / portTICK_PERIOD_MS);i2c_cmd_link_delete(cmd);vTaskDelay(1 / portTICK_PERIOD_MS);cmd = i2c_cmd_link_create();i2c_master_start(cmd);i2c_master_write_byte(cmd, As5600_Addr << 1 | I2C_READ_MODE, ACK_CHECK_ENABLE);i2c_master_read_byte(cmd, &angle_high, ACK); //0x0c是高位i2c_master_read_byte(cmd, &angle_low, NACK);i2c_master_stop(cmd);i2c_master_cmd_begin(I2C_NUM_0, cmd, 1000 / portTICK_PERIOD_MS);i2c_cmd_link_delete(cmd);result=(uint16_t)(angle_high<<8|angle_low); //一共就11位 注意angle=((int) result & 0b0000111111111111)*360.0/4096.0;//angle=result*360.0/4096.0;ESP_LOGI(AS_TAG,"%.2f",angle);
}
实验效果
下一阶段继续
基于ESP32 IDF开发FOC(1)-AS5600角度读取相关推荐
- SimpleFOC(三)—— AS5600角度读取
目录 一.硬件介绍 1.磁编码器说明 2.硬件连接 二.程序演示 1.模拟电压获取角度 2.I2C通信获取角度 三.程序拓展 SimpleFOC的教程比较多,做了一个总的链接,欢迎点击阅读:Simpl ...
- ESP32启明云端又有新玩法|基于ESP32+热像仪传感的物联网非接触智能测温终端为高考护航了
今天是高考第一天,想想N年前的自己,高考前抱着破罐子破摔的心态,书丢一边,好吃好喝迎高考!所以结局惨淡无比! 不提伤心事了,今天祝所有的高考考生都能取得自己满意的成绩! 今天提到的ESP32的新玩法跟 ...
- ESP32 IDF LVGL 1.47寸圆角屏幕测试
前言 基于ESP32 IDF框架移植的LVGL,IDF版本为4.3.1,LVGL版本为8.1.1.屏幕为中景园的1.47寸172x320分辨率的圆角IPS,驱动芯片为st7789v3. B站视频效果: ...
- 用启明云端基于ESP32模块的开发板来快速了解天猫精灵
为什么要了解天猫精灵呢? 在物联网时代,单纯的"互联"已经无法满足需求,需要让万物"智联"才能发挥它的应用价值.AI语音的简单.易用特性将成为万物"智 ...
- ESP32 ESP-IDF开发环境搭建,Windows下基于ESP-IDF | Cmake | VScode插件的 ESP32 开发环境搭建
之前的一篇博客 Windows上基于ESP-IDF搭建ESP32开发环境 发布后,深受好评.几个月过去了,乐鑫的esp-idf-tools安装工具发生了较大的变化,VsCode插件的功能也愈加完善 ...
- esp32系列(11):ESP32 IDF平台 mpu6050 DMP 驱动移植及测试上位机开发
目录 1 DMP 官方库介绍 1.1 DMP与MPL(Motion Processing Libraries)功能 1.2 运行MPL的硬件要求 1.3 Motion Driver 6.12 的架构 ...
- ESP32C3基于Arduino框架下的 ESP32 RainMaker开发示例教程
ESP32C3基于Arduino框架下的 ESP32 RainMaker开发示例教程 ESP RainMaker ESP RainMaker 是乐鑫推出的一个端到端平台.基于该平台,用户无需管理基础设 ...
- 使用乐鑫官方资源搭建基于Arduino的ESP32的开发环境
目录 一.配置IDE管理器 二.自动安装板支持包 三.手动安装板支持包 四.网盘的ESP32全系列基本库的板支持包 使用乐鑫官方库搭建Arduino开发环境. 乐鑫官方Github:GitHub - ...
- ESP32开发之旅——基于ESP32的室内空气质量检测系统
ESP32开发之旅--基于ESP32的室内空气质量检测系统 前言 成果展示 核心代码 MQTT部分 获取传感器数据部分 连接WiFi部分 结尾 前言 本文主要是我课设项目的一个备忘,部分资料来源于网上 ...
最新文章
- iOS 微信SDK1.8.6后需要UniversalLink解决方案及采坑记录
- 解耦 多态性 java_java多态
- linux shell 缺少 ps 命令
- 编译动态库时遇到relocation R_X86_64_32 against a local symbol的错误
- python执行系统命令的方法
- java perm 查看_高级 Java 必须掌握:JVM 分析工具和查看命令,超详细
- 操作系统内存分配算法_操作系统基础45-伙伴系统和slab内存分配
- 论文浅尝 | 基于事理图谱的脚本事件预测
- php添加用户信息进入数据库,dedecms用户将信息插入数据库
- 玩转 SpringBoot 2 之整合 JWT 上篇
- Linux C编程Makefile编写初步-转
- OpenCV环境搭建(Windows+Visual studio)及Hello World
- tensorflow不能安装问题之(wrapt)
- jmeter安装配置教程
- oracle数据库架构视频教程,Oracle数据库体系架构_oracle架构_oracle学习视频_oracle数据库_课课家...
- hawk物联网组态工具_有哪些开源html5的组态软件
- 手机图形计算器matlab,Mathlab图形计算器下载
- Arora is a lightweight cross-platform web browser.
- 什么是嵌入式开发?嵌入式是什么?初学者必看。
- 盘点愚人节各大网站彩蛋,谁最爱恶搞?