Sunday, September 24, 2017

PCA9540之应用(2-channel I2C multiplexer)

        这是一款来自NXP的很老的芯片了,现在都升级为PCA9640了。是一颗很容易理解的二选一开关,在很多场合都可以应用到这种简易的IIC开关,便于系统的扩展。之所以把这么一颗简单的IIC开关拿出来,只是因为前段时间犯了一个错误导致花费了一些时间,故而记录一下。

        

器件地址

这是器件地址,很好理解,按照上篇讲到的7位地址则为0x70,即111(MSB),000(LSB)。而且这个地址全部是全固定地址,硬件无法改变,从另外一个角度来讲,一个Master下只能接一个这种开关,无法扩展多个。


控制寄存器


很明确,这里就是后三位用于开关的通道选择,由于本器件只有两个通道,所以3bit已经足以达到目的。


状态表

也很清晰,0x00是上电默认状态,此时任何一个通道都没有选通;0x04则选通的为通道0;0x05则选通的为通道1. 其中D3至D7位无需考虑,有用的只有低3位。


写寄存器

        这是写操作,请注意的是这里。这里是直接写控制寄存器,并没有常规理解上的寄存器地址。也就是说,在发送完器件地址,收到响应后直接发送控制寄存器值即可,无需先发送地址。如果一定要说地址偏移量,也可以说成是0.也即offset设置为0.因为此类IIC器件的功能非常简单,并没有太多的内容需要操作,所以并没有分区分块的操作。


读寄存器

        这是读操作。从上图可以看出,也是非常简单,只需要将R/W位改为1即可,也是没有所谓的地址的。

        当初所犯之错误就在这里,想当然的将读写地址设置为0x00。这样在写的时候还好,没有实际影响,但是在读的时候实际是有一个"地址" 的动作,这样实际写入的就是0x00,也就是说将此前已经实际写入的寄存器值(0x04或0x05)又覆盖掉了,覆盖成0x00,故而一个通道都没有打开。


--------
Any feedback, please contact @ support@itestgroup.com

Saturday, September 2, 2017

【iTestGroup】IIC总线地址之解惑

在实际项目中,经常会遇到客户对器件地址有不同的定义,刚开始总是非常困惑,不清楚7位地址与8位地址之间到底怎么转换,有些甚至还有10位地址。经过一段时间的摸索,也总算是弄明白了,记录一下。


7位地址:

在7位寻址过程中,从机地址在启动信号后的第一个字节开始传输,该字节的前7位为从机地址,第8位为读写位,其中0表示写,1表示读。
slave-address-fig1.png
图1:7位寻址。I2C总线规范规定,标准模式I2C,从机地址为7位长,其次是读/写位。
任何I2C设备都必须遵循这个标准,大部分的从机地址即为这7bit地址,不包含读写位,读写位会根据不同的函数自动添加进去。这就是我们最常见的7位器件地址。

8位地址:
一些厂商在提供从机地址的时候说的是包含了读写位的8bit地址,比如他说写地址为0x92,读地址为0x93,如下图所示
slave-address-fig2.png
图2: 8位寻址
这种情况下,只需要将这个地址的前7bit提取出来,比如为0x49。所以这里很关键的一点是:7位地址的编码规则是xxx:xxxx的分隔形式。从8位地址转换到7位地址时,舍弃掉读写位,也就是最后一位后,按照xxx:xxxx的格式再次编码即可。
还有一种方式可以判断厂商提供的地址是7bit模式地址还是8bit地址模式的地址,7bit地址模式下,地址的取值范围在0x07到0x78之间,若超过了这个范围,那么这个地址可能就是8bit地址。
slave-address-fig3.png
图3:有效的7bit地址范围

10位地址:
I2C总线的10bit寻址和7bit寻址是兼容的,这样就可以在同一个总线上同时使用7bit地址和10bit地址模式的设备,在进行10bit地址传输时,第一字节是一个特殊的保留地址来指示当前传输的是10bit地址。
slave-address-fig4.png
图4:10bit地址寻址
在使用10bit地址模式的时候,分两个字节依次传入数据即可。

Reference:
  1. http://www.usbxyz.com/archives/202
  2. IIC-BUS Specification and User Manual (http://www.nxp.com/documents/user_manual/UM10204.pdf)




Saturday, June 10, 2017

【iTestGroup】MLX91206 series Offline Auto-Programming Machine

一、验证烧录 (Verification of Programming)


1. 验证的主要依据: 客户手动烧录手册 Programmierung_Melexis.docx),我们根据烧录器PTC-04以及MLX91206芯片的理解与分析,分析的主要依据有烧录器以及芯片的官方说明书,数据手册等文档。

 Basis of Verification: Programming Manual from customer(Programmierung_Melexis.docx), according to understanding and analysis of the PTC-04 programmer and MLX91206 chip datasheet, mainly based on the analysis of the programmer and the chip's official manual, application and other documents.

2. 验证的主要方法:对比手动烧录以及自动烧录所产生的数据,回读的数据,下面将截图以详细说明。

 Method of Verification: Compare the data produced by manual programming with the data from auto-programming, and the following screenshot will be described in detail.


手动烧录过程:Manual Programming Process


3.1  Read EEPROM to Image: 顾名思义就是把芯片内容读取到Image,从另一个角度讲就是芯片出厂是有一个预置数据的。

Read the content of EEPROM from the chip to Image, mean read the default setting and content of the chip.

3.2  Copy Image to Temp:把Image的数据复制到Temp,其实这一步是为下一步做准备的。

Copy the image data to a temp area.

3.3  根据客户手册(Programmierung_Melexis.docx),到这里我们需要修改两个参数 (RoughGain以及FineGain),从下面的截图可以看出,芯片默认的值分别为4 & 651,不满足客户要求,需要修改为3 & 789,而且这里实际操作会发现,只有Temp那一列是可以编辑修改的,而Image是不能编辑修改的,这就是为什么需要3.2步的复制操作。

According to the programming manual from customer, here need modify 2 parameters, (RoughGain and FineGain), per the below screenshot, the default value is 4&651, not same as the customer requirements. Need change to 3&789. And here only Temp area are enable to modify, but the Image is disable.

3.4  Program EEPROM with Temp:就是将我们刚刚修改好的参数,包括芯片默认的其他参数全部烧录进芯片的EEPROM区域。

Programming the modified parameters into the EPROM of chip.

3.5  Read EEPROM + Verify:也就是将刚刚烧录的内容跟Temp进行比较。至此,完成了所有的烧录操作。

Read the values which was written by step 3.4 from the EEPROM and also compare with Temp.



自动烧录过程:Auto-Programming Process


整个过程跟手动模式是一样的,唯一的差别就在于将这些需要手动点击鼠标以及输入数据的地方,通过调用API函数,由软件自动完成。

The whole process is same as the manual programming, the only difference is to use the software to call the API function, and instead of the click and type actions manually. 

验证的原理:就是将自动烧录完成后的芯片,在手动烧录界面只做最后一步或者只做第一步,也就是读取芯片EEPROM的内容到Image,通过手动烧录软件界面就可以看到数据了。

Principle of Verification: Use the manual programming method to check the actual data from EPROM chip which was already programming by Auto-programming.

 

结论:Conclusion

通过比较,我们发现自动烧录与手动烧录都能实现两个要求修改的参数RoughGainFineGain的一致性。

显然,仔细比较的话,也能发现除了RoughGainFineGain高度一致外,其他参数并不完全一致。为了比较差异,我们又做了如下比较,我们用手动方式烧录不同的芯片,然后回读比较,发现即使手动烧录,芯片个体之间的数据也并不完全一致。然后自动烧录的不同芯片个体之间也同样不完全一致。

另外,从内容本身来看,比如LotNumber,如果是不同批次的芯片,读取不一致,也是合理的,所以理论上应该是允许不一致的。另外,还有的就是ID值,类似于SN,本来就应该是有独立性的。

After verification, the key parameters are the same as the manual programming method, such as RoughGain and FineGain. Of course, the best way is through functional verification.


iTestGroup为客户提供从工装夹具到烧录器选型以及软件设计一条龙的完整解决方案。有业务需求可联系sales@itestgroup.com,技术交流可联络support@itestgroup.com


iTestGroup】provide the one-step programming solution, include but not limit fixture design, programmer selection and software design. For business query, contact with Sales@iTestGroup.com; For the technical query, such as Melexis chip, PTC-04 API function... contact with Support@iTestGroup.com


<Above is the real case and get the authorization from end user for public release.>



Wednesday, June 7, 2017

【iTestGroup】I2C总线从设备地址冲突


I2C地址

I2C总线是最常用的总线之一。因为它占用的I/O资源少,总线结构简单。I2C总线上设备的关系是"一主多从",所以I2C协议中最重要的一个组成部分是I2C从设备地址。从设备地址有两种格式:7bit和12bit。由于实际使用中基本上不会挂载如此多的从设备,所以很多从设备的地址都采用7bit的格式。但是随着提供I2C接口的从设备种类越来越多 ,不同功能的从设备地址就会产生重叠。


地址冲突现象

主设备无法正常读写总线上设备地址产生冲突的从设备。通过逻辑分析仪分析总线时序,发现主设备每次请求从设备时,总线上就会有两个从设备应答,接下来的时序就乱套了。


地址冲突的原因

人为因素

在从设备选型时没有考虑到从设备地址,选用了两个相同地址的从设备。

非固定的从设备地址

一般从设备的地址经硬件上的配置后,基本都是固定的7bit。但是有一些从设备地址不是固定,如EEPROM存储器CAT24C04 。当读取CAT24C04的地址0xFF以下的数据时,从设备地址为0xA1,当读取0xFF以上的数据时从设备地址为0xA5。当总线上同时挂载了一个时钟芯片PCA8563时,因为PCA8563的从设备读取地址是0xA5,所以这两个器件就会产生了地址冲突。很多人都会只看到CAT24C04的地址是0xA1,而忽略了0xA5,从而造成了总线地址冲突。

不可避免的地址冲突

当工程师门根据项目的需求选型了两个从设备。两个从设备的地址都是不可配置,并且两个从设备地址相同。


解决方法

当从设备地址可配置时

对设备地址进行配置,避免设备地址相同。

当从设备地址不可配置时

使用多路复用器

NXP的I2C总线多路复用器,如PCA9540B是现在市面上最主流的产品之一。工作原理如图 1。



图 1 多路复用器工作原理


使用多路开关

NXP的I2C总线多路开关,如PCA9543A是现在市面上最主流的产品之一。工作原理如图 2。



图 2 多路开关工作原理


归为同一组的从设备地址都不相同,把存在地址冲突的从设备放到另外一组,每次只打开一个开关,主器件每个时刻只能和其中一组设备通信。这样同样可以解决地址冲突问题。

增加一条I2C总线

现在的MCU一般都提供2个以上的I2C接口,如果在从设备地址产生冲突,并且MCU资源有剩的情况下。可以通过增加一条I2C总线来解决地址冲突问题。


iTestGroup】具备众多基于IIC总线的开发经验,如基于IIC总线的TMP75温度传感器、TCS3414颜色传感器等等,在测试测量领域有着众多的应用。自主开发功能模块,能大幅降低测试设备整体成本,也有着更高的灵活性,当然稳定性也有一定的挑战。【iTestGroup】所开发的功能模块大部分为自用,如果有需求,也可以联系sales@itestgroup.com商讨。如果有相关的技术爱好,也欢迎与support@itestgroup.com沟通联络。


<本文转载自周立功微信公众号,如有侵权,请联系admin@itestgroup.com处理>

Friday, May 12, 2017

【iTestGroup】RaspberryPi树莓派简介以及在测试系统中的应用

       树莓派由注册于英国的慈善组织"Raspberry Pi 基金会"开发,Eben·Upton/埃·厄普顿为项目带头人。2012年3月,英国剑桥大学埃本·阿普顿(Eben Epton)正式发售世界上最小的台式机,又称卡片式电脑,外形只有信用卡大小,却具有电脑的所有基本功能,这就是Raspberry Pi电脑板,中文译名"树莓派"。这一基金会以提升学校计算机科学及相关学科的教育,让计算机变得有趣为宗旨。基金会期望这 一款电脑无论是在发展中国家还是在发达国家,会有更多的其它应用不断被开发出来,并应用到更多领域。在2006年树莓派早期概念是基于Atmel的 ATmega644单片机,首批上市的10000"台"树莓派的"板子",由中国台湾和大陆厂家制造。

        它是一款基于ARM的微型电脑主板,以SD/MicroSD卡为内存硬盘,卡片主板周围有1/2/4个USB接口和一个10/100 以太网接口(A型没有网口),可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口,以上部件全部整合在一张仅比信用卡稍大的主板上,具备所有PC的基本功能只需接通电视机和键盘,就能执行如电子表格、文字处理、玩游戏、播放高清视频等诸多功能。 Raspberry Pi B款只提供电脑板,无内存、电源、键盘、机箱或连线。

       树莓派的生产是通过有生产许可的三家公司Element 14/Premier Farnell、RS Components及Egoman。这三家公司都在网上出售树莓派。现在,你可以在诸如京东、淘宝等国内网站购买到你所想要的树莓派。

      树莓派基金会提供了基于ARM的Debian和Arch Linux的发行版供大众下载。还计划提供支持Python作为主要编程语言,支持Java、BBC BASIC (通过 RISC OS 映像或者Linux的"Brandy Basic"克隆)、C 和Perl等编程语言.

  树莓派发展到现在,在全球范围内已经拥有众多的用户以及开发者,已经形成了一个非常完整的生态圈。发布者初衷并不是为了应用在测试系统领域,但是由于其特有的优势,已经开始逐步被测试领域的开发者所关注并应用于一些合适的场景。最主要的特点有如下:

  1、硬件成本极低,不到300元人民币的价格,可以买到一款配置如此齐全的PC级硬件系统,是非常具有优势的。

  2、具备硬件扩展能力,不仅具备GPIO,还具备UART,IIC等通用协议接口。这是相比较一些民用或者商用机所不同之处,所以具备很强的二次开发,二次扩展之用,给我们测试系统开发领域带来很多的想象与应用空间。

  3、硬件系统有比较高的可靠性。虽然这款产品初衷并不是为了工业应用而开发,但是其年销售量已经达到了千万级别,经受住了大量的考验。而且目前的版本也是经过多次迭代后发布的,集成度也非常高。因而具备了远超普通消费电子产品的可靠性与稳定性。

  4、完全开源的硬件以及软件系统,拥有大量的开发者,可以免费自由地获取大量的设计资源以及开发工具包,模块等等,并可以通过网络自动更新,非常友好。其本身的超大出货量已经能说明这一优势。

  5、既可以做系统级、桌面级的开发应用,也可以做板级子系统,子模块的应用。


iTestGroup已经紧跟最新的技术发展趋势,具备基于树莓派硬件平台开发完整的测试系统,无论是桌面软件还是底层硬件软件的开发,都已经在部分客户端成功应用。如果有需求,可以联系我们sales@itestgroup.com 详情可访问网站 www.iTestGroup.com


附:

1、树莓派官方网站:https://www.raspberrypi.org/

2、国内中文资源:shumeipai.nxez.com/www.shumeipai.net

如果有爱好者有其他关于树莓派的疑问或技术交流,也可联系我们support@itestgroup.com

【iTestGroup】LabVIEW软件开发环境

    LabVIEW(Laboratory Virtual instrument Engineering Workbench)是一种图形化的编程语言的开发环境,它广泛地被工业界、学术界和研究实验室所接受,视为一个标准的数据采集和仪器控制软件。LabVIEW集成了与满足 GPIB、VXI、RS-232和 RS-485 协议的硬件及数据采集卡通讯的全部功能。它还内置了便于应用TCP/IP、ActiveX等软件标准的库函数。这是一个功能强大且灵活的软件。利用它可以方便地建立自己的虚拟仪器,其图形化的界面使得编程及使用过程都生动有趣。iTestGroup】可以提供全面的LabVIEW软件设计服务。

    图形化的程序语言,又称为 "G" 语言。使用这种语言编程时,基本上不写程序代码,取而代之的是流程图或框图。它尽可能利用了技术人员、科学家、工程师所熟悉的术语、图标和概念,因此,LabVIEW是一个面向最终用户的工具。它可以增强你构建自己的科学和工程系统的能力,提供了实现仪器编程和数据采集系统的便捷途径。使用它进行原理研究、设计、测试并实现仪器系统时,可以大大提高工作效率。

LabVIEW.jpg

        以上是一个典型的LabVIEW代码

    利用 LabVIEW,可产生独立运行的可执行文件,它是一个真正的32位/64位编译器。像许多重要的软件一样,LabVIEW提供了Windows、UNIX、Linux、Macintosh的多种版本。同时,LabVIEW是一个真正的跨平台的开发软件,在Windows下开发LabVIEW源代码可以直接拷贝到Linux等其他平台系统。

    它主要的方便就是,一个硬件的情况下,可以通过改变软件,就可以实现不同的仪器仪表的功能,非常方便,是相当于软件即硬件!现在的图形化主要是上层的系统,国内现在已经开发出图形化的单片机编程系统(支持32位的嵌入式系统,并且可以扩展的),不断完善中。LabVIEW是由美国国家仪器公司开发并维护,具体详细的资料可以查询官方网站。中文网址:http://www.ni.com/labview/zhs/



iTestGroup】拥有十多年经验的软件开发工程师团队,能够提供基于LabVIEW的多平台软件设计开发服务,包含PC、PXI以及嵌入式(单片机)系统等等编程软件设计服务。有需求请联系我们sales@itestgroup.com 技术交流请联系support@itestgroup.com 详情可访问www.itestgroup.com 


Friday, February 3, 2017

How to remove the passowrd of VIs by LabVIEW

Here share one method to remove the password of VIs.

1, Upload the VI online, http://www.hmilch.net/h/labview.html


2, Remove the password locally, download the tools from http://www.hmilch.net/h/download.html, and you can also find the source code from https://github.com/tomsoftware/VI-Explorer-VI OR http://www.hmilch.net/h/source.html

Thanks Thomas Zeugner who designed and provided this tools.