一种支持用户协议的通用I2C总线控制器的制作方法

文档序号:17080051发布日期:2019-03-09 00:09阅读:201来源:国知局
一种支持用户协议的通用I2C总线控制器的制作方法

本发明涉及一种通用i2c总线控制器,特别是一种支持用户协议的通用i2c总线控制器。



背景技术:

i2c即inter-integratedcircuit,亦称集成电路内连接总线,是一种简单有效的两线式双向串行数据通讯总线,主要用于微处理器与各种外围数字集成电路器件之间的通讯。上世纪八十年代,i2c总线首先由荷兰飞利浦半导体公司即nxp公司开发,并于世纪在九十年代初期发布了i2c总线技术规范1.0版本,由此取得了i2c总线的专利权。上世纪九十年代末,随着数字集成电路及其应用技术的发展,飞利浦公司又发布了i2c总线技术规范2.0版,对i2c总线的功能和性能进行了提升,满足了数字电路使用少量端口引脚即可实现高速数据传输和低功耗的需求。本世纪初,该i2c总线技术规范2.1版又公开发布,使i2c总线的功能和性能得到了进一步完善和扩展。尽管i2c总线技术规范的版本不断升级,但技术上还是全面保持了对以前版本的兼容性。

i2c总线提供了较完善的总线协议和最简单的串行连接方式,为各种应用系统设计提供了一种完善的集成电路间的串行总线扩展技术,大大简化了应用系统的硬件设计,为实现应用系统的模块化设计提供了极为有利的条件。i2c总线由两根信号线组成,多个器件可同时挂接在同一个i2c总线上,不同器件之间由不同的地址来区分的,这既节省了集成电路芯片的i/o管脚,也节省了用户系统pcb板的面积。i2c总线电气兼容性好,各器件之间以开漏的i/o管脚相互联接,这样只要选取适当的上拉电阻就能轻易实现3v/5v逻辑电平之间的兼容。i2c总线支持多种通信方式,除了一主多从这种最常见的通信方式,还支持多主机通信、双主机通信、以及广播模式等。i2c总线通信速率也非常高,标准模式下,i2c总线的数据传输速率为100kbps,快速模式下可达到400kbps,同时兼顾低速率数据通信。并且i2c总线协议简单,容易实现,很容易就能将i2c总线接口控制逻辑放入定制集成电路中。因此,i2c总线技术一经公开,即受到各个定制集成电路设计生产厂家的大力欢迎。目前,许多定制集成电路设计生产厂家,包括半导体巨头德州仪器即ti公司、英特尔、意法半导体即st公司、美国国家半导体即nationalsemiconductor公司、英飞凌科技等,已经取得了i2c总线的使用授权,并将i2c总线应用在了lcd驱动控制器、i/o接口控制器、数据存储器、a/d、d/a转换器,以及温度传感器等多种定制集成电路器件中,实现了这些器件与微处理器之间的高速数据通讯,从而使i2c总线成为了国际上通用的一种总线标准。

但是,有些微处理器中没有集成i2c总线接口,对于由这种微处理器构成的用户系统,目前通用的做法是利用微处理器上开漏的i/o管脚,通过微处理器监控程序,模拟实现一种i2c总线接口。另一方面,定制集成电路设计生产厂家在遵守i2c总线技术规范的同时,也根据自家集成电路器件的技术特点,对i2c总线接口进行了本地化设计,通过简化i2c总线通讯协议,提高自家器件与微处理器之间数据通讯的速度和效率,这就使得不同厂家的集成电路器件,尽管也采用了i2c总线接口,但由于器件内部的i2c总线控制器所实现的i2c总线通讯协议不完全一致,因此,这样两种器件就不能连接在一起,也就不能实现两个器件之间通过i2c总线的数据通讯。



技术实现要素:

本发明目的在于提供一种支持用户协议的通用i2c总线控制器,解决i2c总线接口用户协议不一致时,不同厂家定制集成电路之间i2c接口的硬件连接问题。

一种可支持用户协议的通用i2c总线控制器,包括:微控制器接口模块、工作寄存器阵列模块、双端口数据存储模块、同步时序信号生成模块和i2c总线接口时序生成模块。

微控制器接口模块经内部连线与工作寄存器阵列模块和双端口数据存储模块相连;工作寄存器阵列模块经内部连线与同步时序信号生成模块和i2c接口时序生成模块相连;双端口数据存储模块经内部连线与i2c总线接口时序生成模块相连;同步时序信号生成模块经内部连线与双端口数据存储模块和i2c总线接口时序生成模块相连。

微控制器接口模块的功能为:实现可编程逻辑器件配置器与x86系列微控制器控制总线、地址总线和数据总线的硬件连接,或者接受x86系列微控制器输入的控制命令、参数和数据,或者将可编程逻辑器件配置器的内部工作状态信息或数据传送给x86系列微控制器。

工作寄存器阵列模块的功能为:接收并存放微控制器接口模块传送的系统控制命令、参数和数据,实现x86系列微控制器对通用i2c总线控制器工作参数的配置和工作过程的控制,同时,记录通用i2c总线控制器的工作状态信息和数据,并传送给微控制器接口模块。

双端口数据存储模块的功能为:接收微控制器接口模块传送的微控制器控制信号和数据,存储用户系统需要交换的信息数据,或是存储外部系统经i2c总线传送进来的信息数据,供微控制器接口模块读取。

同步时序信号生成模块的功能为:按照工作寄存器阵列模块传送的工作参数和命令,产生通用i2c总线控制器正常工作所需要的同步时序信号,并传送给通用i2c总线控制器内部各个模块。

i2c总线接口时序生成模块的功能为:根据工作寄存器阵列模块中记录的通用i2c总线控制器的工作参数和命令,自动生成i2c总线接口时序信号和配套的双端口数据存储模块端口操作信号。

当用户系统将通用i2c总线控制器被配置为i2c总线主器件时,i2c总线接口时序生成模块主动发起并控制i2c总线上的数据通讯过程,并根据用户系统的命令,或者将双端口数据存储模块中的数据从i2c总线上传输出去,或者从i2c总线上接收数据,并存放到双端口数据存储模块中。

当用户系统将通用i2c总线控制器配置为i2c总线从器件时,i2c总线接口时序生成模块被动接受i2c总线上其它主控制器的控制,并根据i2c总线上的命令,或者将双端口数据存储模块中的数据从i2c总线上传输出去,或者从i2c总线上接收数据,并存放到双端口数据存储模块中。

当i2c总线接口时序生成模块完成一次数据通讯操作后,自动生成“一次数据交换操作完毕”中断请求信号。

当通过外部引脚电路,将通用i2c总线控制器设置为i2c总线主控制器时,用户系统上电复位后,通用i2c总线控制器按工作寄存器阵列模块缺省配置的工作参数开始工作,并处于空闲状态,等待用户系统通过微控制器接口模块输入配置参数、通讯数据或控制命令;当接收到用户系统发来的“传送数据命令”时,通用i2c总线控制器按当前工作寄存器阵列模块配置的工作参数,由同步时序信号生成模块产生通用i2c总线控制器正常工作所需要的同步时序信号,并传送给通用i2c总线接口时序生成模块,最后由i2c总线接口时序生成模块自动产生i2c总线时序信号sda和sck,从而将双端口数据存储模块中指定地址处开始和指定长度的信息数据,依次按位从i2c总线端口上传送出去,待全部指定数据传输完毕后,通用i2c总线控制器自动生成“一次数据交换操作完毕”中断请求信号,并再次进入空闲状态,等待用户系统发出新的指令;当接收到用户系统发来的“接收数据命令”时,通用i2c总线控制器按当前工作寄存器阵列模块配置的工作参数,由同步时序信号生成模块产生通用i2c总线控制器正常工作所需要的同步时序信号,并传送给通用i2c总线接口时序生成模块,然后由i2c总线接口时序生成模块监视i2c总线时序信号sda和sck,并按i2c总线协议,按位依次从i2c总线端口接收外部系统传送进来的数据,最后由双端口数据存储模块将接收到的数据依次存放到指定地址处开始的连续存储单元中,待i2c总线上的数据全部接收完毕,或者是接收到指定长度的数据后,通用i2c总线控制器自动生成“一次数据交换操作完毕”中断请求信号,并再次进入空闲状态,等待用户系统发出新的指令。

当通过外部引脚电路,将通用i2c总线控制器设置为i2c总线从控制器时,用户系统上电复位后,通用i2c总线控制器按工作寄存器阵列模块缺省配置的工作参数开始工作,并处于空闲状态,等待用户系统通过微控制器接口模块输入配置参数、通讯数据或控制命令,同时监视i2c总线上信号的变化;当接收到外部主控制器发来的“启动一次数据传送操作”时,通用i2c总线控制器按当前工作寄存器阵列模块配置的工作参数,由i2c总线接口时序生成模块5自动监视i2c总线上时序信号sda和sck,并根据从i2c总线上接收到的总线通讯命令执行相应的数据传送操作;当总线通讯命令为“读存储单元数据命令”时,由同步时序信号生成模块产生通用i2c总线控制器正常工作所需要的同步时序信号,并传送给双端口数据存储模块和i2c总线接口时序生成模块,当i2c总线接口时序生成模块接收到有效的存储器数据地址后,控制双端口数据存储模块将指定地址中的数据传送给i2c总线接口时序生成模块,最后由i2c总线接口时序生成模块将双端口数据存储模块中指定单元中的信息数据,依次按位从i2c总线端口上传送出去,待全部指定数据传输完毕后,通用i2c总线控制器自动生成“一次数据交换操作完毕”中断请求信号,并再次进入空闲状态,等待外部主控制器发出新的指令;当总线通讯命令为“写存储单元数据命令”时,由同步时序信号生成模块产生通用i2c总线控制器正常工作所需要的同步时序信号,并传送给双端口数据存储模块和i2c总线接口时序生成模块,当i2c总线接口时序生成模块接收到有效的存储器数据地址和数据后,控制i2c总线接口时序生成模块将接收到的地址和数据传送给双端口数据存储模块,最后由双端口数据存储模块将接收到的数据依次存放到双端口数据存储模块指定地址处开始的连续存储单元中,待i2c总线上的数据全部接收完毕,通用i2c总线控制器自动生成“一次数据交换操作完毕”中断请求信号,并再次进入空闲状态,等待用户系统发出新的指令。

本发明充分考虑了x86系列微控制器、各种定制集成电路器件i2c总线接口的技术特点,通过通用i2c总线控制器,不仅对内部没有i2c总线接口的x86系列微处理实现了i2c总线接口扩展,而且通过向工作寄存器模块写入合适的配置字,使用户系统可能根据自身特点和当前需要,对通用i2c总线控制器进行配置,从而实现不同数据通讯方式的i2c总线通讯协议,为本地化后的定制集成电路与微处理器之间的i2c总线接口连接,提供一种可靠的连接方式。

附图说明

图1一种支持用户协议的通用i2c总线控制器组成示意图。

1.微控制器接口模块2.工作寄存器模块3.双端口数据存储模块4.同步时序生成模块5.i2c总线接口时序生成模块

具体实施方式

一种可支持用户协议的通用i2c总线控制器,包括:微控制器接口模块1、工作寄存器模块2、双端口数据存储模块3、同步时序信号生成模块4和i2c总线接口时序生成模块5。其中:

微控制器接口模块1经内部连线与工作寄存器阵列模块2和双端口数据存储模块3相连;工作寄存器阵列模块2经内部连线与同步时序信号生成模块4和i2c接口时序生成模块5相连;双端口数据存储模块3经内部连线与i2c总线接口时序生成模块5相连;同步时序信号生成模块4经内部连线与双端口数据存储模块3和i2c总线接口时序生成模块5相连。

微控制器接口模块1的功能为:实现可编程逻辑器件配置器与x86系列微控制器控制总线、地址总线和数据总线的硬件连接,或者接受x86系列微控制器输入的控制命令、参数和数据,或者将可编程逻辑器件配置器的内部工作状态信息或数据传送给x86系列微控制器。

工作寄存器模块2的功能为:接收并存放微控制器接口模块1传送的系统控制命令、参数和数据,实现x86系列微控制器对通用i2c总线控制器工作参数的配置和工作过程的控制,同时,记录通用i2c总线控制器的工作状态信息和数据,并传送给微控制器接口模块1。

双端口数据存储模块3的功能为:接收微控制器接口模块1传送的微控制器控制信号和数据,存储用户系统需要交换的信息数据,或是存储外部系统经i2c总线传送进来的信息数据,供微控制器接口模块1读取。

同步时序信号生成模块4的功能为:按照工作寄存器模块2传送的工作参数和命令,产生通用i2c总线控制器正常工作所需要的同步时序信号,并传送给通用i2c总线控制器内部各个模块。

i2c总线接口时序生成模块5的功能为:根据工作寄存器模块2中记录的通用i2c总线控制器的工作参数和命令,自动生成i2c总线接口时序信号和配套的双端口数据存储模块3端口操作信号。

当用户系统将通用i2c总线控制器被配置为i2c总线主器件时,i2c总线接口时序生成模块5主动发起并控制i2c总线上的数据通讯过程,并根据用户系统的命令,或者将双端口数据存储模块3中的数据从i2c总线上传输出去,或者从i2c总线上接收数据,并存放到双端口数据存储模块3中。

当用户系统将通用i2c总线控制器配置为i2c总线从器件时,i2c总线接口时序生成模块5被动接受i2c总线上其它主控制器的控制,并根据i2c总线上的命令,或者将双端口数据存储模块3中的数据从i2c总线上传输出去,或者从i2c总线上接收数据,并存放到双端口数据存储模块3中。

当i2c总线接口时序生成模块5完成一次数据通讯操作后,自动生成“一次数据交换操作完毕”中断请求信号。

当通过外部引脚电路,将通用i2c总线控制器设置为i2c总线主控制器时,用户系统上电复位后,通用i2c总线控制器按工作寄存器模块2缺省配置的工作参数开始工作,并处于空闲状态,等待用户系统通过微控制器接口模块2输入配置参数、通讯数据或控制命令;当接收到用户系统发来的“传送数据命令”时,通用i2c总线控制器按当前工作寄存器模块2配置的工作参数,由同步时序信号生成模块4产生通用i2c总线控制器正常工作所需要的同步时序信号,并传送给通用i2c总线接口时序生成模块5,最后由i2c总线接口时序生成模块5自动产生i2c总线时序信号sda和sck,从而将双端口数据存储模块3中指定地址处开始和指定长度的信息数据,依次按位从i2c总线端口上传送出去,待全部指定数据传输完毕后,通用i2c总线控制器自动生成“一次数据交换操作完毕”中断请求信号,并再次进入空闲状态,等待用户系统发出新的指令;当接收到用户系统发来的“接收数据命令”时,通用i2c总线控制器按当前工作寄存器模块2配置的工作参数,由同步时序信号生成模块4产生通用i2c总线控制器正常工作所需要的同步时序信号,并传送给通用i2c总线接口时序生成模块5,然后由i2c总线接口时序生成模块5监视i2c总线时序信号sda和sck,并按i2c总互协议,按位依次从i2c总线端口接收外部系统传送进来的数据,最后由双端口数据存储模块4将接收到的数据依次存放到指定地址处开始的连续存储单元中,待i2c总线上的数据全部接收完毕,或者是接收到指定长度的数据后,通用i2c总线控制器自动生成“一次数据交换操作完毕”中断请求信号,并再次进入空闲状态,等待用户系统发出新的指令。

当通过外部引脚电路,将通用i2c总线控制器设置为i2c总线从控制器时,用户系统上电复位后,通用i2c总线控制器按工作寄存器模块2缺省配置的工作参数开始工作,并处于空闲状态,等待用户系统通过微控制器接口模块1输入配置参数、通讯数据或控制命令,同时监视i2c总线上信号的变化;当接收到外部主控制器发来的“启动一次数据传送操作”时,通用i2c总线控制器按当前工作寄存器模块2配置的工作参数,由i2c总线接口时序生成模块5自动监视i2c总线上时序信号sda和sck,并根据从i2c总线上接收到的总线通讯命令执行相应的数据传送操作;当总线通讯命令为“读存储单元数据命令”时,由同步时序信号生成模块4产生通用i2c总线控制器正常工作所需要的同步时序信号,并传送给双端口数据存储模块3和i2c总线接口时序生成模块5,当i2c总线接口时序生成模块5接收到有效的存储器数据地址后,控制双端口数据存储模块3将指定地址中的数据传送给i2c总线接口时序生成模块5,最后由i2c总线接口时序生成模块5将双端口数据存储模块3中指定存储单元中的数据,依次按位从i2c总线端口上传送出去,待全部指定数据传输完毕后,通用i2c总线控制器自动生成“一次数据交换操作完毕”中断请求信号,并再次进入空闲状态,等待外部主控制器发出新的指令;当总线通讯命令为“写存储单元数据命令”时,由同步时序信号生成模块4产生通用i2c总线控制器正常工作所需要的同步时序信号,并传送给双端口数据存储模块3和i2c总线接口时序生成模块5,当i2c总线接口时序生成模块5接收到有效的存储器数据地址和数据后,控制i2c总线接口时序生成模块5将接收到的地址和数据传送给双端口数据存储模块3,最后由双端口数据存储模块3将接收的数据存放到指定地址处开始的连续存储单元中,待i2c总线上的数据全部接收完毕,通用i2c总线控制器自动生成“一次数据交换操作完毕”中断请求信号,并再次进入空闲状态,等待用户系统发出新的指令。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1