查看:
39504
回复: 22 |
制作一款基于USB串口的I2C在线调试神器
|
|
发表于2017-02-21 16:50:16
|
显示全部楼层
1#
电梯直达
制作一款基于USB串口的I2C在线调试神器
1、作品简介 I2C总线,是NXP半导体(原PHILIPS)于20多年前发明的一种简单的双向二线制串行通信总线,也叫I2C或IIC(Inter-Integrated Circuit,内部集成电路总线)。 I2C总线是各种总线中使用信号线最少,电路简洁,并具有自动寻址、多主机时钟同步和仲裁等功能的总线。因此,基于I2C接口的各类芯片器件, 在实际市场中得到广泛应用。这些芯片例如:
※ 24CXX系列的EEPROM,如24LC08、24C01、24C128等等 ※I2C总线8位并行IO口扩展芯片PCF8574/JLC1562; ※I2C接口时钟芯片DS1307/PCF8563/SD2000D/M41T80/ME901/ISL1208/; ※I2C ADC芯片ADS1110 (16bitADC)/ADS1112(16bitADC)/ ※I2C DAC芯片DAC5574(8bitDAC)/DAC6573(10bitDAC)/DAC8571(16bitDAC)/; ※I2C接口的温度传感器SHT30/SHT31/TMP101/TMP275/DS1621/MAX6625;
为了评估这些芯片,通常的做法是使用一个单片机或ARM,自行编写I2C驱动代码,然后对这些器件进行读写操作,并把数据结果上传到PC机的方式进行展现。 然而,这样的做法较麻烦,因为单片机需要反复的烧录和调试,不是很直观和方便。为此,本人使用来自英国著名公司FTDI的高性能USB转串口芯片FT234XD芯片 +NXP公司的UART转I2C总线协议管理器芯片C18IM700制作了这款可在线实时读写I2C总线的调试利器、神器!这款利器具有操作简单(会打字就行)、显示直观 地特点,大大提高了测试和评估各类I2C器件的工作效率。下面,请允许本人给大家介绍这款利器的设计过程和使用方法。
2、作品亮点 ① 实现通过UART协议读写I2C协议的从器件或者传感器,不用写繁琐的I2C程序咯! ② I2C的底层驱动由原发明人--NXP公司设计和提供,确保了I2C驱动的最佳时序! ③ 采用业界公认的USB接口专家--FTDI公司出品的FT234XD作为USB转串口单元。 ④ 可高速通信,C18IM700的UART支持到460K,I2C支持到400K。 ⑤ 接口信号:SCL、SDA、GND、+5V、+3.3V ⑥ 本方案验证板采用USB BUS总线供电,评估I2C器件,无需额外再提供电源。 ⑦ C18IM700的所用IO均引出,包括8个GPIO端口和2个输入按键。 ⑧ 本方案验证板一分为二,即可单独用作USB转串口模块,也可以单独用在I2C读写模块。 ⑨ 2.3-3.6V供电,支持5V IO口的I2C电气接口。
3、系统构架图
系统解说: 本系统有二大部分组成,分别是:基于FT234XD的高性能USB转串口模块部分和基于NXP的SC18IM700 I2C MASTER总线驱动模块部分。
4、原理图
原理图分为多个部分,下面逐个介绍: 第一部分: USB转串口模块部分
备注说明: 上图使用的是FTDI官方推荐的应用电路,其中U1是FT234XD 负责实现USB转串口的芯片,C9、C10、R10、R11组成了USB总线的信号匹配和防D+D-短路(过流)的电路, FT234XD内置USB上拉电阻,所以无需额外在增加。U3是USB总线的抗静电保护器件,采用的是美国力特LittelFuse公司出品的SP0503BAHTG, 可以根据需要焊接或不焊接。而R1、 R2、Q1、C5组成用来一个软启动、VBUS(5V)电源输出的电路,以减轻对外部负载的电流冲击,进而影响到USB通信芯片 FT234XD的稳定性和可靠性。如果不需要这个软启动电路, 可以不焊接这些器件,同时用一个零欧姆的电阻跳过该功能。类似地,R18和C14是接到USB连接器的外壳,用于增加外壳的ESD防护能力,可根据需要焊接或不焊接。
第二部分:系统的供电电源部分
备注说明: 如上图所示,本方案验证板模块,可对外提供+5V和+3.3V电源,其中 +3.3V电源由LDO芯片采用台湾Holtek 公司的 HT7233,SOT-89封装,最大可提供300mA的驱动 能力,这个基本能覆盖绝大部分的I2C器件的评估需求。
第三部分: I2C总线驱动模块部分
备注说明: 如上图所示,I2C总控制器采用NXP的SC18IM700这个芯片,它的RX 和TX引脚分别交叉接到USB转串口芯片的TXD和RXD端口。这样以来,上位机软件(如串口助手之类的) 就可以直接控制SC18IM700进行I2C总线的读写操作了。此外,图中的S1轻触开关是用来复位芯片的,如果I2C操作出现异常或者觉得有必要,用户可以按下此开关,进行I2C总线的初始化。 而S2是用来唤醒芯片的,当SC18IM700被设置进入SLEEP状态时。
5、材料清单(BOM列表) 以下是这个电子制作的BOM列表,器件全部采购来自立创商城(http://www.szlcsc.com),PCB板的制造在深圳嘉立创完成。除了插件的器件外,SMT也是嘉立创完成滴。 6、软件部分的描述 软件部分,这个应用方案模块,不需要编写任何代码,纯硬件电路实现,正常焊接即可使用。
7、PCB实物图 8、调试过程和应用实例 第一步: 准备工作 根据上面的BOM表焊接好PCBA后,如果焊接正常的话,通过MicroUSB数据线将它插入到PC机的USB串口后,接着安装FT234XD的串口驱动程序,随后即可进入工作状态。 第二步: 测试PCBA是否焊接正常? 打开USB串口软件(本人用的是SSCOM3.3串口助手),按这个常见的波特率进行设置:(9600,N,8,1, 这个波特率也是SC18IM700的默认波特率,如需修改后面还可以通过相应寄存器 进行设置)。接着,将短接帽JP1和JP2接入,即把USB转串口芯片的TX&RX和SC18IM700的串口线TX&RX连接起来;随后,用手去按下S1复位一下SC18IM700芯片。此时,如果在串口助手 看到有字符“OK“显示,表示PCBA功能基本正常。
第三步:进一步测试TX和RX的连线是否正常 上一步,只是初步测试了串口RX的接收情况,没有测试TX功能。测试TX功能,可以通过读写SC18IM700内部寄存器的方式进行判断,这些寄存器的地址和复位默认值如下: 测试方法,比如我们要读写SC18IM700的00 和01 号寄存器的上电复位默认值,只需在串口助手软件上,以HEX发送的方式,输入“52 00 01 50”即可,如果硬件和连接一切正常的话, 串口助手的接收端(HEX格式接收)会显示“F0 02 “。
第四步:应用实例1: 点亮或熄灭SC18IM700的GPIO端口上外接的一个LED指示灯。 首先,需要给大家说明的是,所有对I2C 总线控制器 SC18IM700的读写和控制,即在线调试,都是通过USB转串口跟芯片SC18IM700之间的交互完成的。这些交互指令,如下:
SC18IM700本身带有8个GPIO接口,每个GPIO可以设置成四种模式(输入或输出),假设一个LED指示灯接到了GPIO.0 这个PIN上,为了点亮或熄灭这个LED 指示灯,我们首先可 直接在串口助手上,发出"4F00 50"或者“4F 01 50" 即可。 第四步:应用实例2:读写EEPROM 芯片24C02 为了,读写EEPROM,我们需要根据SC18IM700的以下这个指令格式,进行操作。 具体地, 为了读取16个默认地址的数据,我们只需要在串口助手里输入和发送“53 XX 10 50”。 其中,XX是24C02的I2C地址(最低字节要为1,表示读),10是表明要读16个数据。
为了写入默认地址的8个字节数据,我们只需要在串口助手里输入和发送“53 YY 08 D1 D2 D3 D4 D5 D6 D7 D8 50”。其中,YY是24C02的I2C地址(最低字节要为0,表示写), 08是表明要写入8个数据。
因篇幅所限,SC18IM的其它功能在此就不在展现,比如为了设置I2C的读写时钟,我们可通过设置SC18IM700内部07和08号的寄存器值,来改变。也可以通过修改SC18IM700内部 09号的寄存器值,来设置或禁止I2C总线的读写信号的时间限定值。通过读取SC18IM700内部0A号的寄存器值,来获取I2C总线执行的结果,通过设置00和01号寄存器进行串口波特 率速度的调整等等。 9、总结 只使用两个芯片SC18IM700和SC18IM700,我们便制作出了这款可在线实时读写I2C总线的调试利器、神器!使用它,我们只需要在串口助手软件上,直接根据I2C的读写格式, 发出相关的操作命令即可对I2C器件进行读写操作,而无需编写任何头疼的I2C代码,也不用反复烧录单片机的调试代码,而是重心放在如何应用I2C器件方面,大大提高了测试 和评估各类I2C器件的工作效率! 此作品以方案验证板的形式出现,并得到了立创商城的赞助,在此表示非常感谢!顺此,授权立创商城对本作品进行宣传和开源! 本内容系原创,首发于《立创快报》第4期,目前仅授权【立创商城】公众号(微信号:szlcsc)及其相关平台转载。 其它任何媒体或个人,未经本作者许可、不得引用。
|
|
发表于2019-11-07 14:57:20
|
显示全部楼层
21#
LZ有没有考虑过现成的USB to I2C芯片比如CP2112呢。
|
|