当前位置: 首页 > news >正文

STM32 软件I2C方式读取AS5600磁编码器获取角度例程

STM32 软件I2C方式读取AS5600磁编码器获取角度例程


  • 🔖本例程使用正点原子例程作为工程模板创建。

📘 硬件电路部分

  • 🌿原理图部分:
    在这里插入图片描述

  • 🌿PCB布线和电路
    在这里插入图片描述

📙驱动代码部分

int main(void)
{u16 i = 0;u16 raw_num = 0;u16 JIAODUnum = 0;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2delay_init(); //延时函数初始化uart_init(9600);	//串口初始化为9600LED_Init();	//初始化与LED连接的硬件接口IIC_Init();while(1) {delay_ms(10);if(++i > 100) {raw_num = AS5600_ReadTwoByte(_raw_ang_hi, _raw_ang_lo); //读取两个寄存器的值JIAODUnum = (raw_num * 360) / 4096; //对寄存器值进行处理得到角度值printf("AS5600 Angle:%d \r\n", JIAODUnum);LED0 = !LED0; //提示系统正在运行i = 0;}}
}
  • 🌿读取效果:
    在这里插入图片描述

📚测试代码

  • 🔖基于stm32f103标准库实现.
链接:https://pan.baidu.com/s/1jmWxyHLhXFY_c5sJyndkmg?pwd=hk0h 
提取码:hk0h

📒i2c地址扫描

  • 🌿基于HAL STM32F1硬件I2C扫描从设备地址:https://blog.csdn.net/weixin_42880082/article/details/131869827

  • 🌿基于Arduino rp2040 I2C扫描程序代码


#include <Wire.h>void setup()
{// Wire.begin();Serial.begin(115200);while (!Serial);             // Leonardo: wait for serial monitorSerial.println("\nI2C Scanner");Wire.setSDA(8);Wire.setSCL(9);Wire.begin();
}void loop()
{byte error, address;int nDevices;Serial.println("Scanning...");nDevices = 0;for(address = 1; address < 127; address++ ) {// The i2c_scanner uses the return value of// the Write.endTransmisstion to see if// a device did acknowledge to the address.Wire.beginTransmission(address);//从指定的地址开始向I2C从设备进行传输error = Wire.endTransmission();//停止与从机的数据传输/** error返回结果:* 0: 成功
1: 数据量超过传送缓存容纳限制
2: 传送地址时收到 NACK
3: 传送数据时收到 NACK
4: 其它错误*/if (error == 0){Serial.print("I2C device found at address 0x");if (address<16) Serial.print("0");Serial.print(address,HEX);Serial.println("  !");nDevices++;}else if (error==4) {Serial.print("Unknown error at address 0x");if (address<16) Serial.print("0");Serial.println(address,HEX);}    }if (nDevices == 0)Serial.println("No I2C devices found\n");elseSerial.println("done\n");delay(5000);           // wait 5 seconds for next scan
}

在这里插入图片描述

http://www.lryc.cn/news/328274.html

相关文章:

  • [WTL/Win32]_[初级]_[如何设置ListView的列宽不出现水平滚动条]
  • Mac更换JDK版本
  • Day55:WEB攻防-XSS跨站CSP策略HttpOnly属性Filter过滤器标签闭合事件触发
  • root_fs文件系统结构分析和内核加载流程
  • macOS系统配置RUST开发环境
  • Android 15全面解读:性能飙升、隐私守护与智能生活新纪元
  • Java项目:80 springboot师生健康信息管理系统
  • 云服务器配置 docker-spark
  • Matlab之求直角坐标系下两直线的交点坐标
  • Python3:ModuleNotFoundError: No module named ‘elftools‘
  • 【Vue】创建vue项目 npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED
  • 5、Cocos Creator 动作系统
  • web3 token 如何理解
  • unity pivot和center的区别
  • Python学习笔记-简单案例实现多进程与多线程
  • python常用的语法
  • 【计算机网络】概述
  • 【Flink connector】文件系统 SQL 连接器:实时写文件系统以及(kafka到hive)实战举例
  • RpcContext :提供了在 RPC 调用过程中访问当前调用信息的方法
  • 机器学习 - 提高模型 (代码)
  • 数值代数及方程数值解:预备知识——二进制及浮点数
  • 新数字时代的启示:揭开Web3的秘密之路
  • 算法——动态规划:01背包
  • 写作类AI推荐(二)
  • 分寝室(20分)(JAVA)
  • Spring 源码调试问题 ( List.of(“bin“, “build“, “out“); )
  • Centos7安装RTL8111网卡驱动
  • 吉时利KEITHLEY2460数字源表
  • 数据库原理(含思维导图)
  • 数据结构(六)——图