快捷搜索:  test  as

基于DSP虚拟I2C总线软件包的结构设计

小序

数字旌旗灯号处置惩罚器(DSP)在各领域中的利用已日趋广泛,此中TITexas Instrument)公司的TMS320系列芯片盘踞了主导职位地方。TMS320F206(简称F206)因为具有片内32K字的Flash,支持JTAG扫描端口的仿真调试,并支持法度榜样的串行下载,便于开拓设计及产品的软件进级,因而在中高级仪器开拓中受到青睐。

DSP的处置惩罚速率虽然较高,但直接支持的I/O口线较少,节制能力相对较弱,因而与外部器件接口采纳串行要领较为得当。常用的串行接口和串行总线有UARTI2C总线,因为I2C总线供给了较完善的总线协议,且接口电路简单,因而获得广泛的利用。今朝,已有很多外围器件支持I2C接口,但多半MCU并不直接支持I2C总线,因而采纳I/O口线模拟I2C的要领成为一种通用办理规划。但因为I2C总线协议的繁杂性及操作治理的特殊性,仍给此类要领的开拓造成了较大年夜不便。好在文献中提出了一种按平台模式设计的、适用于80C51的虚拟I2C总线软件包,大年夜大年夜简化了80C51的I2C接口法度榜样设计,应用户无需懂得I2C总线协议的细节,即可实现响应的接口。文献中也给出了一种用于MSP430单片机的软件包。因为DSP尚无此类软件包,为简化DSP的此类I2C接口法度榜样设计,本文参照文献中的设计原则,设计了一种适用于TMS320C2XX系列DSP开拓的软件包。

1 虚拟I2C软件包的设计

根据文献中所提到的最佳包涵性设计、后归一化设计、前归一化设计原则,软件包进行了如下定义。

(1)适用范围

① 适用主发送和主接管要领。I2C总线有4种事情要领:主发送、主接管、从发送、从接管。因实际DSP多事情于I2C总线的主要领,因而软件包设计为主要领。

② 适用TMS320C2XX系列与I2C总线外围器件的接口,支持对外围器件N字节的读写,通信要领为对虚拟节点寻址后点对点的读写。

③ 模拟I/O口线可选择4根通用I/O口线(I/O0~ I/O4)中的随意率性两根。

(2)软件包布局设计

TMS320C2XX系列产品,基础包括4根通用I/O口线I/O0~I/O4(因为XF仅能作为输进口线,BIO仅能作为输出口线,因而暂不斟酌)。它们的输入输出偏向由ASPCR的低4位来设定,响应口线状态的设定或读取由IOSR寄存器节制。但此处DSP与80C51有所不合,口线的输入输出状态不是自动切换的,且ASPCR、IOSR寄存器都不支持位寻址要领,因而在进行I2C总线事情要领模拟时较为繁琐。为避免所用寄存器其它状态位的改变,需经由过程较多的与、或操作来改变指定I/O口线的状态,因而本软件包与80C51的虚拟I2C软件包布局稍有不合。当然,这些均在软件包内部完成,应用者不必懂得详细细节,用户接口同样简单易用。

① 软件包组成。为模拟I2C总线的操作时序,软件包中包括了2个宏定义和12个子函数。

(a)时序模拟子法度榜样

Sendb--发送肇端标志,启动I2C总线;senda--发送确认标志;

Sendna--发送非确认标志;Sende--发送停止标志。

(b)操作模拟子法度榜样

geta--接管确认标志;sendd--发送8位数据;

getd--接管1个字节数据。

(c)数据读写子法度榜样

wrnbyte--写入N字节;rdnbyte--读取N字节。

(d)其它宏及子函数

subsendd--根据标志位C设置模拟数据口线的状态;toggleclk--切换模拟时钟口线状态;

Xdelay--延时子法度榜样;Sdainm--将模拟数据口线A设置设置设备摆设摆设为输进口线;

sdaoutm--将模拟数据口线设置设置设备摆设摆设为输出。

因DSP的事情频率一样平常远高于I2C总线的操作频率,因而这里需专用的延时子法度榜样低落模拟时钟口线频率。本文所给出的源法度榜样为F206采纳40 MHz晶振时的环境,用户应用时可随实际环境调剂延韶光阴。

② 软件包符号定义。软件包中包括如下符号定义:

VSDA、VSCL--分手定义了模拟数据口线和模拟时钟口线对应的樊篱位,因DSP中对通用I/O口线的操作不能经由过程位操作来实现,因而仅能樊篱位来定义,如采纳IO3模拟数据线、IO2模拟时钟线,则可定义IO3为08h、IO2为04h;

RAM0--为数据暂存用的临时存储单元;

RIO--为用于保存I/O口线当前状态的存储单元;

SLA--用于保存总线上节点地址并确定传输偏向的存储单元;

NUMBYTE--待发送或接管的字节数存储单元;

MTD--发送数据缓冲区;

MRD--接管数据缓冲区。

以上符号中RAM0、RIO、SLA、NUMBYTE为页内地址,与当前的页指针DP内容设置有关;MTD、MRD为绝对地址,与DP内容无关。

③ 资本占用。应用了帮助寄存器AR0、AR1、AR2、AR6、ACC、ASPCR、IOSR等资本。

④ 利用接口。软件包将wrnbyte、rdnbyte作为独一的出口接口,用户仅需精确设置对应储存单元的内容,调用响应子函数即可:

splk #SLAR/ SLAW,SLA;写入传输节点地址及传输偏向

splk #N,NUMBYTE ;写入待传输字节数

;若输出,设置输出缓冲区内容

call wrnbyte/rdnbyte

3 利用实例

3.1 器件相关功能简介

X1203是带时钟/日历电路和两个闹钟(报警)的低功耗CMOS及不时钟芯片。供给了双埠时钟和报警寄存器,在读写操作时代也能正确事情。其事情电压从2.5~6 V均可,事情电流小于1uA。时钟应用低资源的32.768 kHz晶体输入,以秒、分、时、日、礼拜、月和年为单位记录光阴,具有闰年自动纠正功能,并对少于31天的月份自动调剂;可经由过程设置中断标志按指准光阴激活中断引脚,满意大年夜多半用户对准时器编程的必要。该芯片引脚布局如图1所示(SOIC封装)。

此中SCL为时钟输入端,数据随该时钟旌旗灯号同步输入器件或从器件输出。此引脚上的输入缓冲器始终激活。SDA端为双向引脚,用于串行数据的输入输出;具有漏极开路,可与其它漏极开路或集电极开路输出进行线“或”;需上拉电阻,与SCL引脚共同,可实现400 kHz的2线I2C接口。VBack为备用电源输入端,用于VCC呈现故障时向器件供电。是中断旌旗灯号输出端,可经由过程设置报警寄存器按指准光阴在该端孕育发生报警旌旗灯号;漏极开路,低电平有效。X1、X2分手为反相放大年夜器的输入、输出端;可在X1端接入32.768 kHz的方波基准,或在X1、X2端接入32.768 kHz的石英晶振,设置设置设备摆设摆设成片内振荡器,在初始上电后至少有一个字节写入RTC寄存器时,时钟才开始计数。

X1203中的时钟/节制寄存器(CCR)分5部分:2个8字节报警寄存器(Alarm0、Alarm1),1个1字节节制寄存器,1个8字节及不时钟寄存器和1个1字节状态寄存器。经由过程报警寄存器可设置报警发生的光阴,节制寄存器可使能或禁止报警中断旌旗灯号的输出,及不时钟寄存器以BCD码存储了秒、分、时、日、礼拜、月和年,状态寄存器中保存了用于报警状态标志位及读写使能状态位。此中状态寄存器设置抉择着数据是否能成功地写入。该寄存器如表1所列。

BAT标识器件当前用VBack照样用VCC事情。AL1、AL0标识Alarm0、Alarm1是否及不时钟匹配。RTCF表示及不时钟是否掉效,在总电源掉效后该位置1。RWEL为寄存器写使能存,为0表示禁止,在任何写时钟/节制寄存器之前必须将该位置1。WEL为写使能锁存,低表示禁止,经由过程该位写1、其它位写0,可使该位置位;经由过程该位写0、其它位写0,可使该位清0。只有按规定顺序设置RWEL和WEL,才能成功写入CCR。

今朝,很多DSP芯片尚不直接支持I2C的接口,F206也不例外,因而这里采纳2根通用I/O口线模拟I2C接口。F206与X1203的接口采纳如图2所示的接口规划。

图2中在X1、X2端接入32.768 kHz的石英晶振,将时钟源设置设置设备摆设摆设为片内振荡器。在VCC和VBACK之间经由过程二极管和电阻相连,并与地间加入1个0.47 F的大年夜电容。这样,在电源呈现故障或系统电源关闭时,仍靠得住VBACK真个大年夜电容供电保持时钟芯片的正常事情。它与F206间接口采纳3根口线,这里采纳IO2模拟通信用的时钟旌旗灯号,IO3作为数据输入、输出口线。端可根据用户必要而定,若必要时钟芯片孕育发生中断,可将该端接到F206的中断口线上。留意此中的SDA端和端为漏极开路,必须加上拉电阻,否则不能正常通信。

3.2 X1203的读写操作

这里仅给出F206对X1203进行读写的基础流程,如图3、图4所示,分手为对时钟芯片的读、写历程。此中进行寄存器写时,须留意SR寄存器中WEL和RWEL的设置是否精确,即首先设置WEL有效,而后将WEL、RWEL都置1,否则数据将不能精确写入。在写停止后,应将WEL、RWEL置为无效,以免孕育发生误操作。

此外还须指出,在系统首次上电后(VBack和VCC都掉效后),至少有一字节写入RTC寄存器时,系统才开始事情。在实际应用中,应首先判断SR中的RTCF位是否为1,若是,注解系统为首次应用或VBack和VCC都已掉效,须对X1203至少进行一次写入操作,使其正常计数。

停止语

I2C总线利用已日益广泛,而其协议的繁杂性和操作的特殊性又限定了推广速率。本文先容的一种基于DSP的虚拟I2C总线软件包,简化了TMS320C2XX与I2C器件间接口法度榜样设计,用户无需懂得I2C总线协议的细节,仅需经由过程独一的接口界面wrnbyte/ rdnbyte即可实现响应的接口。本文还给出了一个TMS320F206与时钟芯片X1203间的接口实例,先容了软件包的应用措施,盼望能供读者参考。

您可能还会对下面的文章感兴趣: