arduino i2c 如何写16位寄存器_让你的小串口爆发(支持i2c-tools)

b1ae591dcfb66a7f522e3e31b1517ead.png

说实话,我很久都没有在知乎上更新文章了,本来写的就少。一开始在CSDN和知乎两边写文章,酝酿一点有价值的东西不容易,现在的话我就直接把之前CSDN上的几篇的总结在一起,偏向安利有意思的内容,就不长篇大论讲技术了。看了之前很多人收藏点赞,我就继续更新吧。

感慨:后来用知乎确实少了,主要是总是推荐一些段子,特别是荤段子,最讨厌的是总是带着奇怪的三观,没有贬义或许是我老了没办法接受,答主然后一本正经说来,字里行间暗示着大家都是这个样子,而且透露着不能反驳的意思,让人有的是时候为了融入贵圈就不知不觉就接收了他们的价值观,或许贵圈实在不适合我这样的人吧。

言归正传

不少人也体验过嵌入式开发板linux上的i2c-tools工具,能够扫描i2c总线上的设备,查看指定设备的寄存器,这样的工具要是windows上也有就好了,调试一些传感器或者摄像头SCCB之类的就不用在找开发板来做了。串口是很多搞嵌入式开发的必备工具,如果身边的随手可见的串口突然也可以调试i2c,spi了会不会感觉瞬间美滋滋?

源码在这里

rede97/tinyboard-tools​github.com
c631d4e8e0e45ff421c6d567c0099923.png

先来看看最终成果吧~(钨冬粉)

  • 这里扫描了GY91包含了MPU9250九轴传感器和BMP280气压计
#扫描i2c总线,0代表第0个FDTI设备,0x68是MPU9250,0x76是BMP280
PS ~> .i2cdetect.exe 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --
#查看MPU9250的寄存器,who am i寄存器0x75为0x71
PS ~> .i2cdump.exe 0 0x68
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00: c5 ce e0 0e a0 17 25 cf fa f0 fb fd 00 5a 5b 77
10: bf b9 a5 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 01 e3 9c e3 7c cd
40: 6c fa 60 ff 1f 00 3b ff f0 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: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 1f 89
70: 00 00 00 00 00 71 00 15 fa 00 eb 12 00 22 82 00
80: c5 ce e0 0e a0 17 25 cf fa f0 fb fd 00 5a 5b 77
90: bf b9 a5 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 00 01 e3 9c e3 68 cc
c0: 24 fa 80 ff 15 00 2b ff a0 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 01 00 00 21 22
f0: 00 00 00 00 00 71 00 15 fa 00 eb 12 00 22 82 00

道理我都懂,可是为什么...

有便宜点的国产CH340,外国的CP210x,但是有一款FT232R就比较贵了,大家都是过时的串口除了FIFO大一点不知道为什么就他这么贵!FT232R就是今天的主角,解锁他的新姿势。FTDI的芯片不止如此,大多用于JTAG用在做FPGA的板载下载器或者USB转FPGA。

  • 前提是你需要一块有12M晶振的FT232R才行

我再某宝上看了很多FT232RL,但是都没有外部晶振,原因是内部晶振足够用于串口了,FT232R的BITBANG模式是必须外部12M晶振的具体原因参考这篇文章:bitbang ftdi usb to serial converters to drive spi devices 没有外部晶振的bitbang模式会引起输出乱序的问题,困扰了作者很长时间,这个一定要注意了,就是这个样子:

f8eafe04c9c38a327324b11492183eda.png
  • 什么是BitBang模式

BItBang模式是FT232RL串口模式外额外提供的一种模式,高端系列的芯片也有,算是FTDI芯片家族的标配了,BitBang模式就是把串口下的TX RX RTS# CTS# DTR# DSR# DCD# RI#引脚作为GPIO使用,对应着BitBang模式下的D0~D7,对应FT_WriteFT_Read中一个byte的0-7bit。具体地说BitBang有三种模式可以看我的CSDN博客,I2C就是依靠同步BitBang模式来实现的先读取后写入。

Asynchronous Bit Bang Mode (异步BitBang)
Synchronous Bit Bang Mode (同步BitBang)
CBUS Bit Bang Mode (CBUS BitBang)

a8559565a5ebc4d0da4ddbad5756c502.png
  • 接线是很简单的,10K上拉电阻可以不要,SCL连接TX,SDA连接RX就可以了

217fc3e5e6d4e2d2aab22a9a6be35803.png

说在最后

我不久之后会支持EEPROM和SPI FLASH的,欢迎新的小伙伴的加入和贡献。

  • 传送门

Mingw下使用FTD2XX进行FTDI的开发 - m454078356的专栏 - CSDN博客

FT232R之Bit Bang - m454078356的专栏 - CSDN博客

FTDI BITBANG软件实现i2ctools

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值