i2c调试工具分享

i2c-tools简介

在嵌入式开发仲,有时候需要确认硬件是否正常连接,设备是否正常工作,设备的地址是多少等等,这里我们就需要使用一个用于测试I2C总线的工具——i2c-tools。

i2c-tools工具是一个专门调试i2c的,开源,可获取挂载的设备及设备地址,还可以读写I2C设备寄存器。

下面我们就对这个工具的安装和使用做个简单介绍。

i2c-tools安装

下载地址:https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/。本文使用的是4.3版本。

解压

下载完成后,放到linux环境下解压。

 tar -zxvf i2c-tools-4.3.tar.gz 
 cd i2c-tools-4.3

编译

使用以下命令进行编译

make CC=arm-linux-gnueabihf-gcc   USE_STATIC_LIB=1

USE_STATIC_LIB 的意思是使用静态编译。编译完成后,会在tools目录下产生i2cdetect,i2cdump,i2cget,i2cset,i2ctransfer五个产物。将这些可执行文件拷贝到设备上。

不加 USE_STATIC_LIB 编译选项,会使用动态链接的方式编译。编译完成后需要拷贝i2c-tools-4.3/lib 目录下的libi2c.so.0动态库到设备上的/usr/bin 目录下。

i2c-tools使用方法

i2cdetect

i2cdetect用來列举I2C bus和上面所有的设备,可接受的参数有

Usage: i2cdetect [-y] [-a] [-q|-r] I2CBUS [FIRST LAST]
       i2cdetect -F I2CBUS
       i2cdetect -l
  I2CBUS is an integer or an I2C bus name
  If provided, FIRST and LAST limit the probing range.

-V:输出当前版本号

debian@npi:/mnt/mnt$ ./i2cdetect -V
i2cdetect version 4.3

-l:输出所有 i2c 总线,如下总线编号有twi1和twi2,或者1和2

debian@npi:/mnt/mnt$ ./i2cdetect -l
i2c-0   unknown         21a0000.i2c                             N/A
i2c-1   unknown         21a4000.i2c                             N/A
debian@npi:/mnt/mnt$ ls -l /dev/i2c-*
crw------- 1 root root 89, 0 Mar 19 09:42 /dev/i2c-0
crw------- 1 root root 89, 1 Mar 19 09:42 /dev/i2c-1

I2CBUS:i2c总线编号
-F:此 i2c 支持的功能

root@npi:/mnt/mnt# ./i2cdetect -F 1
Functionalities implemented by /dev/i2c-1:
I2C                              yes
SMBus Quick Command              yes
SMBus Send Byte                  yes
SMBus Receive Byte               yes
SMBus Write Byte                 yes
SMBus Read Byte                  yes
SMBus Write Word                 yes
SMBus Read Word                  yes
SMBus Process Call               yes
SMBus Block Write                yes
SMBus Block Read                 yes
SMBus Block Process Call         no
SMBus PEC                        yes
I2C Block Write                  yes
I2C Block Read                   yes
root@npi:/mnt/mnt# 

-y:指令执行自动yes,否则会提示确认执行Continue? [Y/n] Y,不加参数y会有很多执行提示,可以帮助判断

-a:输出总线上所有地址(00-7f),没有 -a,只显示 08-77,UU 表示该设备在驱动中已使用。

如下0x1a,0x39的地址正在被使用。

root@npi:/mnt/mnt# ./i2cdetect -a 1
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x00-0x7f.
Continue? [Y/n] y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00: 00 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: 60 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
root@npi:/mnt/mnt# ./i2cdetect -y -a 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00: 00 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: 60 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
root@npi:/mnt/mnt# 

i2cdump

i2cdump读取设备上所有寄存器的值,可接受的参数有

Usage: i2cdump [-f] [-y] [-r first-last] [-a] I2CBUS ADDRESS [MODE [BANK [BANKREG]]]
  I2CBUS is an integer or an I2C bus name
  ADDRESS is an integer (0x03 - 0x77, or 0x00 - 0x7f if -a is given)
  MODE is one of:
    b (byte, default)
    w (word)
    W (word on even register addresses)
    s (SMBus block)
    i (I2C block)
    c (consecutive byte)
    Append p for SMBus PEC

-V:输出当前版本号

-f:强制使用此设备地址,即使此设备地址已经被使用;若不添加此参数,地址可能写失败

-y:指令执行自动 yes,否则会提示确认执行Continue? [Y/n] Y,不加参数y会有很多执行提示,可以帮助判断

-r:读取从 first-last 之间的寄存器值

-a:读取0x00-0xff范围的地址

I2CBUS:i2c总线编号

ADDRESS:设备地址,建议使用十六进制

MODE:数据长度类型

root@npi:/mnt/mnt# ./i2cdump -f -y -a 1 0x39
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 00 00 00 00 00 00 00 00 70 00 00 00 00 00 00 00    ........p.......
10: 00 00 00 00 00 00 00 00 00 00 10 b0 02 03 02 00    ..........?????.
20: 95 00 00 00 00 00 40 00 00 00 00 fb ff dd c4 00    ?.....@....?.??.
30: 00 00 00 00 00 00 90 22 a0 00 00 00 01 10 00 00    ......?"?...??..
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
60: 04 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ??..............
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00    .............?..
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
b0: 00 00 00 00 00 00 00 00 00 77 14 76 01 00 01 00    .........w?v?.?.
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................

# 只读取0x50-0x7f寄存器范围的值
root@npi:/mnt/mnt# ./i2cdump -f -y -r 0x50-0x7f 1 0x39
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
60: 04 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ??..............
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00    .............?..
root@npi:/mnt/mnt# 

通过读取i2c设备寄存器的值与芯片手册的值进行比对,确认我们配置的是否正确。

i2cget

i2cget读取设备上寄存器的值,可接受的参数有

Usage: i2cget [-f] [-y] [-a] I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]
  I2CBUS is an integer or an I2C bus name
  ADDRESS is an integer (0x03 - 0x77, or 0x00 - 0x7f if -a is given)
  MODE is one of:
    b (read byte data, default)
    w (read word data)
    c (write byte/read byte)
    Append p for SMBus PEC

I2CBUS:i2c总线编号

CHIP-ADDRESS:设备地址

DATA-ADDRESS:要读取的寄存器地址

MODE:数据长度类型

# 0x39设备地址,0x04要读取的寄存器
root@npi:/mnt/mnt# ./i2cget -f -y 1 0x39 0x04
0x03

i2cset

i2cset设置设备上寄存器的值,可接受的参数有

Usage: i2cset [-f] [-y] [-m MASK] [-r] [-a] I2CBUS CHIP-ADDRESS DATA-ADDRESS [VALUE] ... [MODE]
  I2CBUS is an integer or an I2C bus name
  ADDRESS is an integer (0x03 - 0x77, or 0x00 - 0x7f if -a is given)
  MODE is one of:
    c (byte, no value)
    b (byte data, default)
    w (word data)
    i (I2C block data)
    s (SMBus block data)
    Append p for SMBus PEC

I2CBUS:i2c总线编号

CHIP-ADDRESS:设备地址

DATA-ADDRESS:要写入的寄存器地址

VALUE:要写入的值

MODE:数据长度类型

root@npi:/mnt/mnt# ./i2cset -f -m 0xff -r 1 0x39 0x04 0x03
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will write to device file /dev/i2c-1, chip address 0x39,
data address 0x04, data 0x03 (masked), mode byte.
Continue? [Y/n] y
Old value 0x00, write mask 0xff, will write 0x03
Continue? [Y/n] y
Value 0x03 written, readback matched
root@npi:/mnt/mnt# 

把写入寄存器的值读出来。确认与我们写入的值相同。

root@npi:/mnt/mnt# ./i2cdump -f -y -r 0x00-0x0f 1 0x39
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 00 00 00 00 03 00 00 00 70 00 00 00 00 00 00 00    ....?...p.......
root@npi:/mnt/mnt# 

i2ctransfer

i2ctransfer通过一次传输发送用户定义的I2C消息,用于创建I2C消息并将其作为一次传输合并发送。

Usage: i2ctransfer [-f] [-y] [-v] [-V] [-a] I2CBUS DESC [DATA] [DESC [DATA]]...
  I2CBUS is an integer or an I2C bus name
  DESC describes the transfer in the form: {r|w}LENGTH[@address]
    1) read/write-flag 2) LENGTH (range 0-65535) 3) I2C address (use last one if omitted)
  DATA are LENGTH bytes for a write message. They can be shortened by a suffix:
    = (keep value constant until LENGTH)
    + (increase value by 1 until LENGTH)
    - (decrease value by 1 until LENGTH)
    p (use pseudo random generator until LENGTH with value as seed)

Example (bus 0, read 8 byte at offset 0x64 from EEPROM at 0x50):
  # i2ctransfer 0 w1@0x50 0x64 r8
Example (same EEPROM, at offset 0x42 write 0xff 0xfe ... 0xf0):
  # i2ctransfer 0 w17@0x50 0x42 0xff-

I2CBUS:i2c总线编号

DESC:{r | w}<消息长度>[@设备地址]

  • {r | w}指定消息是读还是写

  • <消息长度>指定在此消息中读取或写入的字节数。它被解析为一个无符号的16位整数

  • [@设备地址]指定此消息要访问的芯片的7位地址,并且是整数。

#参数2为i2c2,w2表示写两个字节,@0x39为i2c设备(注意要7位地址),0x02 0xd3 为高低位地址,r1为读取的数据是一个byte。
root@npi:/mnt/mnt# ./i2ctransfer  -f -y 1 w2@0x60 0x02 0xd3 r1
0x00

总结

本文只是抛砖引玉,i2c-tools还有更多的使用方法,需要大家在实际工作中去探索。

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
废话不说了,下面进入正题,学习FPGA经历了这么几个阶段: ①、Verilog语言的学习,熟悉Verilog语言的各种语法。 ②、FPGA的学习,熟悉QuartusII软件的各种功能,各种逻辑算法设计,接口模块(RS232,LCD,VGA,SPI,I2c等)的设计,时序分析,硬件优化等,自己开始设计简单的FPGA板子。 ③、NiosII的学习,熟悉NiosII的开发流程,熟悉开发软件(SOPC,NiosII IDE),了解NiosII的基本结构,设计NiosII开发板,编写NiosII C语言程序,调试板子各模块功能。 先来说说第一个阶段,现在主要的硬件描述语言有VHDL,Verilog两种,在本科时老师一般教VHDL,不过现在 Verilog用的人越来越多,其更容易上手(与C语言语法比较类似),也更灵活,现在的IC设计基本都用Verilog。像 systemC,systemVerilog之类的应该还在萌芽阶段,以后可能会有较大发展。鉴于以上原因我选择了Verilog作为我学习的硬件描述语 言。 其实有C语言的基础,学起Verilog的语言很简单,关键要有并行的概念,所有的module,assign,always都是并行的,这一点与软件语言有明显不同。这里推荐几本评价比较好的学习Verilog的书籍: ①、《verilog 数字系统设计教程》,这本书对于入门是一本很好的书,通俗易懂,让人很快上手,它里面的例子也不错。但本书对于资源优化方面的编程没有多少涉及到。 ②、《设计与验证Verilog HDL》,这本书虽然比较薄,但是相当精辟,讲解的也很深入,很多概念看了这本书有种豁然开朗的感觉,呵呵。 学习Verilog其实不用看很多书,基本的语法部分大家都一样,关键是要自己会灵活应用,多做练习。 Verilog语言学了一段时间,感觉自己可以编点东西,希望自己编的程序在板子上运行看看结果,下面就介绍我学习的第二个阶段。 刚开始我拿了实验室一块CPLD的开发板做练习,熟悉QuartusII的各种功能,比如IP的调用,各种约束设置,时序分析,Logiclock设计方 法等,不过做到后面发现CPLD的资源不太够(没有内嵌的RAM、不能用SignalTapII,LE太少等),而实验室没有FPGA开发板,所以就萌生 了自己做FPGA开发板的意图,刚好Cadence我也学的差不多了,就花了几天时间主要研究了FPGA配置电路的设计,在板子上做了Jtag和AS下载 口,在做了几个用户按键和LED,其他的口全部引出作为IO口,电路比较简单,板子焊好后一调就通了(心里那个爽啊...)。我选的FPGA是 cycloneII系列的EP2C5,资源比以前的FPGA多了好几倍,还有PLL,内嵌的RAM,可以试试SignalTapII,用内嵌的逻辑分析仪 测试引脚波形,对于FPGA的调试,逻辑分析仪是至关重要的。利用这块板子我完成了项目中的几个主要功能:RS232通信,指令译码,配置DDS,AD数 据高速缓存,电子开关状态设置等,在实践中学习起来真的比平时快很多,用到什么学什么动力更大。这个时候我主要看的数据有这几本感觉比较好: ①、《Altera FPGA/CPLD 设计(基础篇)》:讲解一些基本的FPGA设计技术,以及QuartusII中各个工具的用法 (IP,RTL,SignalProbe,SignalTapII,Timing Closure Floorplan,chip Editor等),对于入门非常好。 ②、《Altera FPGA/CPLD 设计(高级篇)》:讲解了一些高级工具的应用,LogicLock,时序约束很分析,设计优化,也讲述了一些硬件编程的思想,作为提高用。 ③、《FPGA设计指南--器件,工具和流程》:这本书看了他的目录忍不住就买了,这本书讲述了FPGA设计的各个方面,虽然每个方面都是点到为止,但能让你有个整体的概念,了解FPGA的所有设计功能,了解FPGA开发的整个流程。
相关TE 样品申请链接: https://url.eefocus.com/tetg3 相关TE 解决方案资料下载链接: https://url.eefocus.com/tetg2 概述 TE Connectivity的Measurement Specialties Weather Shield开发套件可提供必要的硬件,将下列传感器连接到任何利用Arduino/Genuino兼容扩展端口进行I2C通信的系统: HTU21D数字相对湿度传感器 MS5637数字大气压力传感器 TSYS01数字温度传感器 MS8607数字相对湿度和数字压力传感器 TSD305-1C55数字热电堆传感器 有64个插头孔焊盘,能够用于焊接外部器件,然后插在主板上进行测试。 原理图 板载 独立的压力、湿度和温度传感器 TE Connectivity Measurement Specialties HTU21D 的工作电压范围是1.5V至3.6V。MS8607非常适合用于嵌入紧凑型器件的气象站应用以及需要压力、湿度和温度监测的任何应用。 独立的压力和温度传感器 TE Connectivity Measurement Specialties MS5637 的工作电压范围是1.5V至3.6V。该传感器模块包括一个高线性度压力传感器和一个超低功耗24位Δ-Σ ADC,具有内部工厂校准系数。 独立的压力、湿度和温度传感器 TE Connectivity Measurement Specialties MS8607的工作电压范围是1.5V至3.6V。MS8607非常适合用于嵌入紧凑型器件的气象站应用以及需要压力、湿度和温度监测的任何应用。 独立的温度传感器 - TE Connectivity Measurement Specialties TSYS01 的工作电压范围是2.2V至3.6V。TSY01具有适用于功率敏感型应用的低功耗待机模式。 Arduino / Genuino库和示例源代码 https://github.com/TEConnectivity/Weather_Shield_Arduino_Library 相关产品 Arduino Zero开发板是由UNO平台衍生而来的32位扩展版本,旨在用于智能物联网设备、可穿戴技术等领域的创新型项目。Zero开发板具备更高的性能,并可用作出色的教学工具,用于学习如何开发32位应用程序。该开发板由Atmel SAMD21 MCU供电,其配备32位ARM CortexM0+内核。Atmel的嵌入式调试器 (EDBG) 设有完整的调试接口,无需其他硬件即可轻松进行软件调试。EDBG还支持虚拟的COM端口,可用于为设备编程,并具有引导加载功能。 Arduino INDUSTRIAL 101是一款用于Arduino 101 LGA模块的评估板,在基板上集成有ATmega32u4微控制器。该模块支持基于OpenWRT(名为LininoOS)的Linux发行版。该开发板还具有一个内置型WiFi(IEEE 802.11b/g/n工作速度高达150Mbps 1x1 2.4 GHz)和3个GPIO引脚(其中2个用作PWM输出)。该评估板的引脚排针上还设有4路模拟输入、USB和以太网信号,此外,还内置有一个直流/直流转换器。 Arduino UNO 第 3 次修订版微控制器板基于 Atmel ATmega328 8 位微控制器 (MCU),可用于连接 MEAS 天气扩展板。Arduino Uno 具有14个数字输入/输出引脚(其中六个可用作PWM输出)、6 路模拟输入和一个 16MHz石英晶体振荡器。UNO还包含一个USB接口、一个电源插孔、一个在线串行编程 (ICSP) 排针和一个复位按钮。
与 Python 的 SimpleHTTPServer,Node.js 的 serve 不同,serve2 是一个支持动态文件的工具,前者们只支持静态文件,而serve2支持编写代码动态处理和返回http请求。 常常我们可能会有这样的需求场景:无论是在开发时还是尝试某个框架时,往往需要处理请求参数、Cookies、Http headers等,这样简单的静态文件服务器便无法满足这种需求了。 于是serve2便应运而生了,基于Tj的serve开发,使用起来跟一般的静态文件服务器相同,执行一条命令即可。详细的用法介绍如下。 1. 下载安装 npm install -g serve2 2. 使用运行 λ serve2 --help   Usage: serve2 [options] [dir]   Options:     -h, --help                output usage information     -V, --version             output the version number     -a, --auth <user>:<pass>  specify basic auth credentials     -F, --format <fmt>        specify the log format string     -p, --port <port>         specify the port [3000]     -H, --hidden              enable hidden file serving     -S, --no-stylus           disable stylus rendering     -J, --no-jade             disable jade rendering         --no-less             disable less css rendering     -I, --no-icons            disable icons     -L, --no-logs             disable request logging     -D, --no-dirs             disable directory serving     -f, --favicon <path>      serve the given favicon     -M, --mocks <path>        mock files directory         --cookies             add cookies parse support     -C, --cors                allows cross origin access serving         --compress            gzip or deflate the response         --exec <cmd>          execute command on each request 标签:serve2 分享 window._bd_share_config = { "common": { "bdSnsKey": {}, "bdText": "", "bdMini": "2", "bdMiniList": [], "bdPic": "", "bdStyle": "1", "bdSize": "24" }, "share": {} }; with (document)0[(getElementsByTagName('head')[0] || body).appendChild(createElement('script')).src = 'http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion=' ~(-new Date() / 36e5)];\r\n \r\n \r\n \r\n \r\n \u8f6f\u4ef6\u9996\u9875\r\n \u8f6f\u4ef6\u4e0b\u8f7d\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\nwindow.changyan.api.config({\r\nappid: 'cysXjLKDf', conf: 'prod_33c27aefa42004c9b2c12a759c851039' });
MiniIMU AHRS 姿态仪采用主控制芯片STM32F103T8,通过电路板上的8M晶体和stm32内部的PLL,控制器可以运行在72M的主频上,对于姿态解算这种需求大量数学运行的程序,更快的处理速度可以做更多的解算优化。MiniIMU AHRS 姿态仪通过I2C接口与STM32F连接,同时传感器的数据中断引脚与STM32F的IO相连。使得传感器在完成ADC转换后,STM32F在第一时间读取最新的数据,快速响应姿态的变化。MiniIMU AHRS 姿态仪预写了各个芯片的驱动和姿态解算程序,该程序有以下功能: 读取MPU-6050输出的三轴角速度和三轴加速度ADC值 读取HMC5883磁力计各个轴所感应到的磁力强度ADC值 读取气压计BPM180的温度和气压并经过校正程序得到真实的气压高度 运行一个IMU解算程序,得到当前模块的俯仰,横滚,航向,气压高度 和温度 程序将各个传感器值和解算后的姿态发送到主串口TXO输出给上位机。连接上位机将显示波形和各传感器值 以上功能提供源码,编译器为MDK:编译环境:MDK-Lite Version: 4.23 MiniIMU AHRS 姿态仪硬件组成: MPU-6050 集成3轴陀螺仪和3轴加速器 HMC5883L 3轴地磁传感器 BPM180 气压高度计 STM32F103T8 32-bit ARM CortexM3处理器运行在72M时钟 miniIMU AHRS 姿态测量系统硬件框图: 电源组成: 数字电源与模拟电源使用独立的稳压器供电,在靠近各传感器VCC端都放置有大容量电容保证 稳定的电源供应给传感器。使数据更加稳定可靠。 通信接口: miniIMUDEMO引出两个UART异步串行接口。电路板侧边的UART将用于主数据输出和命令输入。 而另外一个UART可以用于连接GPS、数传电台或者是遥控数据,使模块集成更多的功能 两个UART可以运行在115200bps,支持DMA传送。 集成硬件循环冗余校验(CRC),更快速的数据校验,提高通信效率。 姿态数据处理: miniIMUDEMO集成了一只STM32F103T8,基于ARM Cortex-M3内核,通过板子上的8M晶体和PLL,STM32可以运行在最高72M时钟,高达20K字节的SRAM并且支持7通道的DMA。STM32具有 单周期乘法和硬件除法器,运行姿态解算sin cos atan2这些三角函数更加游刃有余。 STM32调试接口: miniIMUDEMO出于体积考虑,只引出了STM32的串行SWD调试接口,你可以使用STlink或者是Jlink等调试工具。SWD接口需要4条线连接到仿真器: 1.VCC 2.GND 3.SWCLK 4.SWDIO 输入电源: 4V - 7V 直流电源输入,运行时电流约40mA @ 5V MiniIMU AHRS 姿态仪接口定义: 可能感兴趣的项目设计: 姿态传感器IMU模块 附源码和上位机,链接:https://www.cirmall.com/circuit/1730/detail?3 上位机调试系统,如下截图: 1.显示加速度、陀螺仪和磁力计各个轴的当前值,并用波形显示 2.使用3D显示当前解算的姿态,Pitch Roll 和Yaw 3.温度计和当前气压高度值 4.使用地平仪显示俯仰和横滚角
AD单片机集成库分享是指将一些常用的程序及功能模块封装成库文件,供其他开发者使用,以提高开发效率和便捷性的一种方式。 首先,AD单片机集成库可以包含常用的底层驱动程序,如GPIO控制、中断处理、定时器等。这些驱动程序经过封装后可以直接调用,无需开发者自己编写繁琐的底层代码,只需要关注上层逻辑即可。 其次,AD单片机集成库还可以包含一些功能模块,如通信协议栈、传感器驱动、调试工具等。这些功能模块可以实现一些常见的功能,如串口通信、蓝牙通信、I2C驱动等,大大减少开发者的开发周期和工作量。 再次,AD单片机集成库的分享可以促进开发者之间的合作和交流。开发者可以将自己开发的库文件分享出来,供其他开发者使用和改进,从而形成共享资源的良好生态。这样不仅可以避免重复开发,还可以提高开发效率和软件质量。 最后,AD单片机集成库的分享也可以推动单片机应用的发展。通过分享和使用集成库,开发者可以更加专注于上层应用开发,提高了应用的可靠性和可维护性。同时,集成库中可能包含一些优化算法和性能调优的方法,可以进一步提高单片机应用的效率和性能。 总之,AD单片机集成库的分享可以极大地提高单片机应用开发的效率和便捷性,促进开发者之间的合作和交流,并推动单片机应用的发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式与Linux那些事

您的鼓励将使我写出更好的文章

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值