WinCE-IIC调试助手(S3C2410)

    这两天在调试一款新的硬件平台,它采用的MCU依然是S3C2410。该平台新增了一个RTC模块,采用的芯片是DS1337。这是一个IIC接口的时钟芯片。在开始调试时碰到了一些问题,MCU始终无法与DS1337通讯,走了些弯路,浪费了不少时间。后来发现是IIC的SDA和SCL接反了。为了以后能方便调试2410下的IIC设备,所以决定为2410的WinCE做一个IIC调试助手,以免下次再碰到类似的问题,而多花冤枉时间。

      IIC调试助手的主要功能:检测S3C2410 IIC-Bus上的设备,并给出对应的Slave Address。这样,我们就可以快速判断硬件是否有问题。除了侦测设备,同时也要支持读和写的功能。通过选择,能方便控制IIC-Bus上不同的从设备,方便调试。

      S3C2410有一个多主IIC串行总线,IIC总线上主从设备之间数据通信由SDA和SCL来完成。SDA和SCL信号线是双向的。一般情况下,2410作为主设备,它可以接收从设备上发出的数据或者发送数据给从设备。2410中跟IIC相关的寄存器主要有以下几个:

     IICCON——IIC控制寄存器;IICSTAT——IIC状态寄存器;IICDS——IIC移位寄存器; IICADD——IIC地址寄存器。

      IIC总线空闲时,SDA和SCL信号线都保持高电平。在SCL保持高电平的情况下,SDA的下降沿标志一个开始,SDA的上升沿标志一个停止。开始和停止的状态都是由主设备发起的。这也是判断主从设备的一个方法。紧跟在开始位之后的是一个7bit的地址数据,也就是Slave Address,它用来选择特定的IIC从设备,第8bit用来表明读写。SDA信号线上的数据都是8bit的。每个字节后面都紧跟一个ACK位。IIC开始位和停止位的时序图如下:

                   
    2410的IIC总线有四种工作模式:主发送、主接收、从发送、从接收。我们经常使用的一般是主发送和主接收模式。IIC调试助手也是基于这两种模式的。有关S3C2410 IIC更详细的资料请参考其datasheet。

    先为IIC-Bus写一个驱动,最终编译为IICBus.dll,调试时通过驱动调试助手动态加载。具体使用方法请看使用教程。如果系统启动时已经加载了其他的IIC驱动,建议通过驱动调试助手暂时停用,否则在加载本驱动时会出现问题。应用程序的界面如下:    
                         
    点击Scan按钮,侦测IIC总线上的设备,如果硬件正常将返回Slave Address。通过选择Slave Address控制具体的硬件设备,如EEPROM、PCF8591、CH7004等连接在IIC总线上的设备。

    点击Read按钮,将从选择的从设备上获取数据,数据的长度由Read Num来确定,Read Num中填入十进制的数即可,最大不超过256。

    点击Write按钮,将输入的数据发送到从设备上。输入的数据必须是16进制的,每个字节的数据由两个字符组成,如设置PCF8591的DA命令为4000,40为控制字节,00为有效数据(DA的值)。

    具体的读写操作必须根据IIC从设备的情况来定,在测试时请查阅相关文档。该驱动和应用程序在WinCE5.0下测试通过。

    WinCE-IIC调试助手(S3C2410)及使用视频教程的下载地址: http://files.cnblogs.com/we-hjb/S3C2410-WinCE-IIC.rar
    WinCE5.0下单文件版IIC调试助手的下载地址:http://files.cnblogs.com/we-hjb/IICMgr_CE5.0.rar

时间: 2024-09-20 15:28:11

WinCE-IIC调试助手(S3C2410)的相关文章

WinCE驱动调试助手V2.5

     工欲善其事,必先利其器.做WinCE驱动的开发已有一段时间了,WinCE驱动调试助手也跟着更新了很多功能.现在只要做驱动,DM是必须用的.最近在调试WinCE6.0下的驱动,所以又针对WinCE6.0增加了新的功能,也修正了原来的一些BUG.       先介绍一下WinCE驱动调试助手V2.5的功能.驱动调试助手的主要功能是动态加载卸载流驱动,以达到简化驱动调试的目的,节省开发时间,整体分成两部分,注册表操作和驱动调试.       1.注册表操作       V2.5中新增了对整行

Windows Mobile中使用WinCE驱动调试助手的小技巧

      驱动调试助手是针对Windows CE做的,在Windows Mobile中使用会有一些问题,最主要的就是其菜单栏被Windows Mobile系统的任务栏给遮住了,导致相应的功能无法正常使用,如下图所示.             按理来说只要将系统任务栏隐藏就可以,今天在模拟器上实验了一下,看起来是可行的.只是任务栏隐藏后,相应的区域出现画屏,如下图所示.             不知道画屏是不是模拟器的缘故,暂且不管先.驱动调试助手的菜单隐约可见,简单测试了下其中的注册表搜索的功

WinCE下的LCD调试助手

    在实际项目中,经常会根据不同应用配备不同大小的LCD.所以需要针对不同的LCD,调节相应的参数.最近的一个项目,先后用了5.6.7和8寸屏,分辨率都是800*480.由于显示驱动是本地驱动,不能够动态卸载和加载.而在相同分辨率的情况下,不同的LCD仅仅是对应的行场同步参数不一样.所以,为了方便调试,针对TCC89平台做了个LCD调试助手,可以在应用程序中直接修改行场同步参数,实时调试LCD.为了验证参数的正确性,简单做了一个用于测试的界面.    LCD调试助手的界面如下图所示,主要提供

驱动调试助手V2.9

    驱动调试助手的下载次数已经过万,很多网友也提出了一些宝贵建议,非常感谢.这里再做一个更新,V2.9中主要增加了注册表查找和注册表项重命名这两个功能,至此,有关注册表操作的所有功能基本都已实现了.虽然不能跟Resco Regedit等大牌比,但功能上并不差多少,而且原生态的支持WinCE系统,包括ARMV4.ARMV4I.MIPSII.SH4.        简单说明一下新增功能的用法,查找的界面如下.          支持查找项名.键名和字符串类型的键值.默认查找全部注册表,也可以在R

WinCE下调试串口的动态复用

      车机项目中用到了很多串口外设,如DVD机芯.GPS.蓝牙.雷达和胎压监测等,而主CPU(TCC89XX)与小MCU(STM32)之间也是通过串口通讯的.一时之间,串口使用有点捉襟见肘的感觉,只能把调试串口拿出来用做普通串口.       调试串口用作普通串口本身没什么问题,之前在S3C2410上也做过.当时是把2410的调试串口强制改为普通串口,系统启动后调试串口就无法正常使用了.但目前的项目仍在进一步完善之中,调试串口还是相当重要的,经常需要通过它,抓一些TRACE来分析和定位问题

wince C#调试出现:0x80070070: 磁盘空间不足

用C#做界面,效率比MFC要高的多. wince 下,如果需要制作界面,或者需要访问sqlce数据库,C#就非常方便了,如果用MFC,你会发现,访问sqlce 数据库需要设置很多COM接口很麻烦.   初次使用C#开发智能设备应用程序,也就是在wince上运行的应用程序,用VS2005把C#界面程序写好之后,然后编译调试下载. 出现了0x80070070: 磁盘空间不足   错误信息如下:   ------ 已启动生成: 项目: File_cp, 配置: Debug Any CPU ------

c#-C#串口通信问题,调试助手使用正常,真机无效

问题描述 C#串口通信问题,调试助手使用正常,真机无效 1用C#谢了串口调试的代码,真机测试没有反应. 2用两台机器都装了串口调试助手,用C#程序发信息另一台机器的串口助手显示接受到的信息是正确的,链接到真机测试无效 3用调试助手发送代码给真机能正常运行 解决方案 从以下你的反馈信息来看,问题还是出在你的c#的代码上,建议参考以下代码 C#串口通信总结http://www.cnblogs.com/binfire/archive/2011/10/08/2201973.html

485 232-232转USB读取数据正确,但485转USB读取数据出错,用调试助手都可以正常接收数据。

问题描述 232转USB读取数据正确,但485转USB读取数据出错,用调试助手都可以正常接收数据. 用485转USB读取数据有时候正确,有时候乱码.硬件应该没有问题,用调试工具可以正确接收数据. 本人使用的是控件编写的测试程序,,,实在不行用API编写不知道会不会有同样情况..求大神指导... variant_inp = m_ctrlComm.GetInput(); safearray_inp = variant_inp; len = safearray_inp.GetOneDimSize();

WinCE下的TVP5146调试助手

     这两天在调试TVP5146的驱动程序,之前一直都是LF在负责,现在刚刚接手,很多细节都不清楚.不管三七二十一,先做了一个用于读写TVP5146所有内部寄存器的小工具,通过它可以实时修改其中的任意一个寄存器,而不必编译驱动或内核.      实现了这个小工具后,首先切换了一下输入的通道,工作得很好,又从AVIN模式切换到DVD模式,也能看见画面了,虽然有些闪烁,而这就是接下来需要解决的细节问题.      从网上找到了一份Linux下的参考代码,原厂发布出来的,看上去很靠谱,收藏在这,以