![b1ae591dcfb66a7f522e3e31b1517ead.png](https://i-blog.csdnimg.cn/blog_migrate/352a80b24627b39ec896b2bd88303fc9.jpeg)
说实话,我很久都没有在知乎上更新文章了,本来写的就少。一开始在CSDN和知乎两边写文章,酝酿一点有价值的东西不容易,现在的话我就直接把之前CSDN上的几篇的总结在一起,偏向安利有意思的内容,就不长篇大论讲技术了。看了之前很多人收藏点赞,我就继续更新吧。
感慨:后来用知乎确实少了,主要是总是推荐一些段子,特别是荤段子,最讨厌的是总是带着奇怪的三观,没有贬义或许是我老了没办法接受,答主然后一本正经说来,字里行间暗示着大家都是这个样子,而且透露着不能反驳的意思,让人有的是时候为了融入贵圈就不知不觉就接收了他们的价值观,或许贵圈实在不适合我这样的人吧。
言归正传
不少人也体验过嵌入式开发板linux上的i2c-tools工具,能够扫描i2c总线上的设备,查看指定设备的寄存器,这样的工具要是windows上也有就好了,调试一些传感器或者摄像头SCCB之类的就不用在找开发板来做了。串口是很多搞嵌入式开发的必备工具,如果身边的随手可见的串口突然也可以调试i2c,spi了会不会感觉瞬间美滋滋?
源码在这里
rede97/tinyboard-toolsgithub.com![c631d4e8e0e45ff421c6d567c0099923.png](https://i-blog.csdnimg.cn/blog_migrate/41a186fc95074834b02a01794bcdad5f.jpeg)
先来看看最终成果吧~(钨冬粉)
- 这里扫描了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](https://i-blog.csdnimg.cn/blog_migrate/737812edd1a7c96c4077304bb39b5037.jpeg)
- 什么是BitBang模式
BItBang模式是FT232RL串口模式外额外提供的一种模式,高端系列的芯片也有,算是FTDI芯片家族的标配了,BitBang模式就是把串口下的TX RX RTS# CTS# DTR# DSR# DCD# RI#
引脚作为GPIO使用,对应着BitBang模式下的D0~D7
,对应FT_Write
和FT_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](https://i-blog.csdnimg.cn/blog_migrate/6aa5689eb43821378141f5a1bae9bf4e.jpeg)
- 接线是很简单的,10K上拉电阻可以不要,SCL连接TX,SDA连接RX就可以了
![217fc3e5e6d4e2d2aab22a9a6be35803.png](https://i-blog.csdnimg.cn/blog_migrate/d62c320b0c3b264f7f695626bd404027.jpeg)
说在最后
我不久之后会支持EEPROM和SPI FLASH的,欢迎新的小伙伴的加入和贡献。
- 传送门
Mingw下使用FTD2XX进行FTDI的开发 - m454078356的专栏 - CSDN博客
FT232R之Bit Bang - m454078356的专栏 - CSDN博客
FTDI BITBANG软件实现i2ctools