Blackfin531与PCF8576的接口设计及 I2C协议实现 电子设计应用

来源:百度文库 编辑:神马文学网 时间:2024/03/29 20:28:34
Blackfin531与PCF8576的接口设计及 I2C协议实现[ 作者:上海交通大学电机控制驱动研究所 王诚 张松钢 | 转贴自:本站原创 | 点击数:1789 | 更新时间:2005-12-10 21:10 ]
摘?? 要:本文简述了PCF8576的工作原理,并给出了BF531与PCF8576的连接方法和软件设计。
关键词:I2C总线;Blackfin531;液晶显示
引言
本文将结合一个具体的实例来说明如何实现BF531与LCD驱动芯片PCF8576的接口,以及用BF53x自带的PF口模拟实现I2C通信,并且选择结构化设计的C语言来表示模拟通信协议的各个部分,可以方便地更改各种参数。
PCF8576简介
PCF8576为带有I2C总线接口的字符式LCD驱动/控制器,它有4个背极输出和40个显示段输出,因此,最多可驱 动160个LCD显示段。PCF8576可以级联以适应驱动较大规模的LCD显示器,通过I2C总线接口,除了可以与具有I2C总线接口的MCU 相连外,通过I2C总线的模拟,也可以通过MCU的通用I/O口与之相连。PCF8576内部设置的显示RAM以及子地址的自动增量和显示方式可实现自动 切换,使其通信控制量减少到最小。

图1 PCF8576的典型系统结构

图2 I2C协议软件流程图
BF531与PCF8576
的硬件连接
选 择点阵液晶片作为某工业高精度计量系统的显示媒介,采用PCF8576作为驱动芯片。因为PCF8576的外设连接相对来说比较简单,与Blackfin 53x 系列高性能DSP相连无需特别的接口电路。而I2C总线中有两条双向传输线:SDA(串行数据线)和SCL(串行时钟线)。由于BF531没有专用的支持 I2C协议的接口,因此,为了适应双向传输的需要,要征用BF531上的可编程端口PF10和PF11,分别作为SDA和SCL线使用。其中BF531侧 设置将在后面详细介绍。BF531与PCF8576以及点阵式液晶片连接的硬件原理图如图1所示。
为了提高DSP的PF口的驱动能力,在电路中必 须增加上拉电阻。在图1中,A0、A1、A2是I2C总线子地址输入;SA0作为I2C总线地址位0输入。Vss为逻辑地,Vlcd是LCD电源电压。在 点阵式液晶片部分,BP0~BP3是LCD背极输出,类似于行选信号线,而S0~S39则是LCD段输出,等同于列选信号线。用行信号线和列信号线搭配驱 动,就可以驱动点阵式液晶上任意的图形段码。
I2C 总线系统中,PCF8576 只能作为从器件节点,唯一的数据输出是器件的应答信号。I2C 总线对系统中PCF8576 的选择取决于I2C 总线的从地址、传送指令数据以及硬件子地址。在单个器件应用中,硬件子地址输入A0、A1、A2 正常地连到VSS 上,并定义为硬件子地址0。在多个器件应用中,A0、A1、A2 按照二进制编码连到VSS 或VDD 上,不会出现两个器件共用一个子地址的情况,并具有相同的硬件子地址。
PCF8576 的I2C总线从地址为0111000 和0111001,其从地址位的最后一位为SA0。每个PCF8576 可通过特殊指令寻址,因此,I2C总线上的这两类PCF8576 能区别出来,并允许在大量使用时,总线上可挂接16个PCF8576;在相同的总线上可使用两种LCD 的组合。
发送一个起始条件后,紧接着发送 两个PCF8576 从地址中的一个。所有SA0 电平相同的PCF8576 同时响应从地址,但所有与SA0 电平不同的PCF8576与I2C 总线的通信无关。在寻址确认之后为一个或多个(m≥1 个字节)指令字节(COMAND),用来定义所寻址的PCF8576的状态,指令字节中的最高位C=0 时,表明该字节为最后一个指令字节。
最后 一个指令字节之后为一系列显示数据字节(DIS DATA),这些显示数据存放在显示RAM 中由数据指针和子地址计数器指示的地址上。数据指针和子地址计数器可自动变更,数据直接装载到指定的PCF8576上,在每个字节之后的应答位由A2、 A1、A0 寻址的PCF8576 提供,在主控器发送完最后一个字节后,产生一个终止条件P。
软件及寄存器配置方案
根据I2C总线的传输协议规范和PCF8576等硬件组成,可以得到用PF口模拟PCF8576上I2C通信协议的软件流程,如图2所示。
要 利用PF口模拟I2C总线的传输协议规范,就要对PF口对应的寄存器进行配置。 BLACKFIN系列DSP支持16个双向可编程标志PF(或通用I/O引脚PF [15:0] )。每个引脚都可以通过标志方向寄存器(FIO_DIR)单独地配置为输入或输出方式。当配置为输出方式时,写入到标志置位(FIO_FLAG_S)和标 志复位(FIO_FLAG_C)寄存器的状态值决定了由输出PF引脚驱动的状态。读标志置位或标志复位寄存器时,不管配置成输入还是输出状态,都会返回各 个引脚的状态。对于PF口的配置,事实上是对可编程标志存储器映射寄存器(MMR)进行配置。
可编程标志寄存器是系统存储器映射寄存器的一部分。BLACKFIN内核通过系统总线访问标志配置寄存器。要使PFx口按要求工作,则需要设置BF531以下几个标志配置寄存器的值。
1. 标志方向寄存器(FIO_DIR)是一个可读/可写寄存器。每一位对应一个PF引脚。逻辑1将PF引脚配置为输出,0则配置为输入。在复位时,其值为0x0000,即在复位时,所有的PFx引脚都为输入。
2. 标志置位寄存器(FIO_FLAG_S)和标志清除寄存器(FIO_FLAG_C)用来检测定义为输入的PF引脚的电平和设置为输出的PF引脚的状态,并 可以用来清除由PF引脚产生的中断。这两个寄存器的每一位对应一个PF引脚。 读取这两个寄存器的值,都可以返回PF引脚的值。返回的值表示输出PF引脚的状态以及输入PF引脚的电平,这些值都是基于每个引脚的极性和触发方式配置 的。
标志置位寄存器是写1时置位的寄存器,而标志清除寄存器是写1时清除的寄存器。这两个寄存器用来设置和清除每一个输出PF引脚状态及从每一个输入PF引脚捕获的锁存中断状态。这种机制提供了更直接的编程方式,相对于传统的读-修改-写机制,减少了位操作错误。
3. 当处于写状态时,标志数值寄存器(FIO_FLAG_D)可以直接指定所有PF的状态,当处于读状态时,标志数值寄存器能够返回所有PF引脚的值。
MMR配置方法即为PF口方向及初始状态设置。设置对应FIO_DIR寄存器的引脚位为高电平,即令bit10和bit11位置1。设置FIO_FLAG_D寄存器的引脚全为低电平。
DSP侧模拟I2C程序配置实例
以图2软件设计为主要框架,在高精度测量仪表设计中完成了BF531与PCF8576的I2C总线连接与操 作。限于篇幅,程序代码和部分参考程序不在此详述。均是在ADI公司推荐的专用Blackfin DSP编译工具VisualDSP++4.0上编译通过,实现了BF531通过控制PCF8576对仪器使用的点阵式液晶片的操作。
注意事项:在 I2C总线协议中,对SCL和SDA的高、低电平和上升、下降沿的时间有较严格的要求。因此,程序中的检测应答信号(GetSDATA)和时间中断信号 (STOP)是很重要的,这两个子程序在其它各部分程序中均有体现。此外,程序中涉及到的延时短可以根据具体设备进行调整。
依照此设计,完全能够实现其它I2C总线设备与DSP BF531的连接,对于其它类型的DSP芯片I2C总线传输协议的模拟实现也有很大的参考价值。