利用PIC单片机串口模块实现SPI及I2C总线通信_第1页
利用PIC单片机串口模块实现SPI及I2C总线通信_第2页
利用PIC单片机串口模块实现SPI及I2C总线通信_第3页
利用PIC单片机串口模块实现SPI及I2C总线通信_第4页
利用PIC单片机串口模块实现SPI及I2C总线通信_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、利用PIC单片机串口模块实现SPI及I2C总线通信黄亚中国矿业大学信息与电气工程学院,江苏徐州(221008E-mail:huangya1210摘要:本文介绍如何利用PIC单片机的USART模块模拟实现SPI和I2C总线通信。其中SPI总线通信实现过程较为简单,本文只给予扼要介绍,对于用USART模块来实现I2C总线通信是本文的重点,除了介绍实现的方法外,还给出了具体实例。关键词:串口,SPI总线,I2C总线1. 引言在现代的电子电路设计中SPI 和I2C两种串行总线应用越来越广泛,对于硬件上不支持这两种总线的单片机(如AT89C51来说,要想实现这两种总线与电路中其它芯片的通信往往采取软件模

2、拟的办法来实现。对于PIC系列单片机来说,由于片上的串口模块支持同步通信,利用这个功能实现SPI 和I2C总线通信会变得更加容易。本文用到的单片机为PIC16F6902,当其片上的USART模块工作在同步通信主模式时通过适当的软件编程即可实现SPI和I2C方式通信。I2C和SPI通信都是高位数据先传送,而USART模块的通信方式与之相反,所以在数据传送时需调整。为便于理解,本文用到了SPI接口芯片MCP32023和I2C接口芯片AT24C044,下面分别予以阐述。2. MCP3202 和AT24C04介绍以及操作时序MCP3202是12位分辨率的A/D转换芯片,采用SPI总线接口与单片机通信。

3、图1是该芯片管脚图,共有两个模拟信号输入通道。2和3管脚分别是模拟输入通道0和1,而5和6管脚分别是数据输入和数据输出管脚,7管脚是时钟输入管脚,4管脚为接地端,1管脚是片选(CS低电平有效,图3为MCP3202操作时序图。当在DI引脚上出现起始位1时, A/D转换即开始,紧接着在DI引脚上输入的3位是控制命令:SGL/DIFF为单端/差分输入选择。第二位是通道选择,MSBF为数据输出高位/低位在先格式选择,当控制位输入全部结束后,下一个时钟到来时A/D输出结果从DOUT管脚输出,其中第一个数据为引导位0,往后的12位数据才是A/D转换的结果。1 图1 MCP3202管脚图图2 A T24C0

4、4管脚图 图3 MCP3202操作时序图AT24C04是一个EEPROM存储芯片容量为4Kbit采用I2C总线与控制芯片相连。图2是该芯片管脚图,其中A2,A1和A0管脚为芯片地址选择引脚,其中A0未用到而是作为片内地址选择,7管脚WP为硬件写保护,5和6管脚分别是串口通信的数据和时钟线,通过上拉电阻分别与单片机的数据和时钟线连接即可。43. SPI和I2C方式通信的具体实现3.1 利用USART模块模拟SPI 时序实现与MCP3202的通信由图3知MCP3202数据输出管脚在A/D转换完成前为高阻态,而转换完成后其输入引脚可为任意数据,故单片机对MCP3202的操作可以看作是半双工通信,在硬

5、件电路上只需将MCP3202的5和6管脚短接并与单片机USART模块的数据管脚相连,两者的时钟管脚再相连即可。MCP32023在接收数据时,5管脚的输入数据应在时钟下降沿准备好,在时钟上升沿输入芯片内部,MCP32023在完成A/D转换时,转换的结果在时钟的下降沿出现在数据输出管脚,在接着的时钟上升沿数据送入单片机3,从以上分析并结合USART模块的数据传送时序可知当单片机发送起始位及命令时只要USART工作在同步通信主模式的数据发送方式即可,命令发送完成后将USART模块工作方式改为数据接收方式,从而将A/D转换结果读入单片机。程序上实现很简单,故在此省略。下面着重介绍如何实现I2C方式的通

6、信。3.2利用USART模块模拟I2C 时序实现与AT24C04的通信当USART工作在同步通信主模式方式下,硬件电路实现如图4所示,AT24C04字节写操作时序如图5所示。 图4 PIC16F690与A T24C04的硬件接口电路 图5 A T24C04字节写时序图 起始位的产生:由于或门的原因,只要使单片机的RC0引脚输出置1从而使AT24C04的时钟输入端为高电平,此时单片机只要发送数据0x7F(发送的数据已经调整即可实现起始信号的产生。发送数据:此时使RC0引脚输出低电平,确保AT24C04的时钟输入管脚能够接收到正常的时钟信号,单片机的BAUDCTL寄存器的SCKP位置1这样就能保证

7、发送的时序符合AT24C04的通信时序。注意在发送数据前应将数据进行调整以保证AT24C04能够接收到正确的地址或数据信息。接收数据:此时使RC0引脚输出低电平并清零BAUDCTL寄存器的SCKP位,同时对接收的数据应进行调整,以确保单片机收到正确数据。应答位的接收与产生:无论接收或发送应答信号,都应暂时禁止USART功能,用软件模拟实现。停止位的产生:首先置位RC0引脚使AT24C04的时钟输入端为高电平,然后单片机只要发送数据0x80即可实现停止信号的产生。4. 利用USART模块实现I2C通信程序设计限于篇幅所限以下只给出用字节写方式写入AT24C04一个字节数据的程序。对于其它操作方式

8、如读取单字节或连续写入多字节数据程序稍微改动就可实现。以下程序实现的功能是向AT24C04中以0x04为地址的单元中写入数据0xaa。start ;起始位产生程序banksel portcbsf portc,0movlw 0x7fmovwf txregreturnstop ;停止位产生程序banksel portcbsf portc,0movlw 0x80movwf txregreturnwritebyte ;字节写子程序movwf txregbankslel txstabsf txsta,txenbtfss txsta,trmt ;通过查询trmt标志位的状态判断发送是否结束goto $-1

9、returnack ;接收应答子程序banksel rcstabcf rcsta,7bansel trisbbcf trisb,7banksel portbbsf portb,7nopnopbtfsc portb,5goto errreturnerr ;未接受到应答信号错误处理略maincall usartinitial ;调用USART模块初始化程序略call startbanksel portcbcf portc,0movlw 0x05 ;发送器件地址和写操作命令0xa0,注意数据已经调整call writebyte ;调用字节写子程序banksel baudctlbcf baudctl

10、,sckpcall ackcall usartinitial ;当串口功能重新使能时应进行初始化movlw 0x20 ;发送字地址04h,注意数据同样进行了调整call writebytebanksel baudctlbcf baudctl ,sckpcall ackcall usartinitialmovlw 0x55 ;发送数据0aah,由于USART低位数据先发,数据调整为0x55call writebytebanksel baudctlbcf baudctl ,sckpcall ackcall usartinitialcall stopgoto $end5. 结论对于没有SPI和 I2

11、C总线硬接口的单片机来说,实现这两种方式的通信,一般都是采取软件模拟的办法实现,而本文则给出一新方法:即通过USART模块实现。对于PIC单片机来说其片上的USART模块具有同步通信功能,通过适当编程即可简单实现SPI和I2C总线通信。以上程序在实验中已调试通过,希望能给读者一些启发。参考文献1张明峰.PIC单片机入门与实战M.北京:北京航空航天大学出版社,2004.2Microchip Technology Inc.PIC16F690 Date SheetDB/OL. .2006.3Microchip Technology Inc.MCP3202 Date SheetDB/OL. .2006

12、.4Atmel Corporation.A T24C04 Data SheetDB/OL.http:/ .2007.Using serial port of PIC microcontroller to Implement SPIand I2C bus communicationsHuang YaInformation and Electrical Engineering,CUMT,Xuzhou,Jiangsu (221008AbstractThis paper introduces how to use USART module of PIC microcontroller to achive SPI bus and I2C bus communications.Achiving SPI bus communication is si

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论