S3C44B0X接口电路设计与编程.ppt

上传人:小飞机 文档编号:5447100 上传时间:2023-07-08 格式:PPT 页数:134 大小:908KB
返回 下载 相关 举报
S3C44B0X接口电路设计与编程.ppt_第1页
第1页 / 共134页
S3C44B0X接口电路设计与编程.ppt_第2页
第2页 / 共134页
S3C44B0X接口电路设计与编程.ppt_第3页
第3页 / 共134页
S3C44B0X接口电路设计与编程.ppt_第4页
第4页 / 共134页
S3C44B0X接口电路设计与编程.ppt_第5页
第5页 / 共134页
点击查看更多>>
资源描述

《S3C44B0X接口电路设计与编程.ppt》由会员分享,可在线阅读,更多相关《S3C44B0X接口电路设计与编程.ppt(134页珍藏版)》请在三一办公上搜索。

1、第 5 章S3C44B0X 接口电路设计与编程,第5章 主要内容,EV44B0II开发板的存储和I/O地址空间分布 Boot loader在存储地址空间的分布情况。电源时钟复位电路、Boot FLASH 接口电路、SDRAM接口电路、网络USB及IIS接口电路、键盘数码管接口电路、LCD接口电路、触摸屏接口电路、串行口接口电路、IIC接口电路和A/D等接口电路等的设计及编程等。,第5章 目录,1.MICETEK EV44B0II开发板2.存储器电路设计及编程3.网络、USB和IIS电路设计及编程4.人机接口电路设计及编程5.串行接口电路设计及编程,6 IIC接口电路设计及编程7 其他接口电路设

2、计及编程,第5章 目录,1.MICETEK EV44B0II开发板2.存储器电路设计及编程3.网络、USB和IIS电路设计及编程4.人机接口电路设计及编程5.串行接口电路设计及编程,6 IIC接口电路设计及编程7 其他接口电路设计及编程,5.1 MICETEC EV44B0开发板简介,简介,MICETEK EV44B0II实验平台是由上海祥佑数码公司开发的,并配有HITOOL FOR ARM 和HITOOL FOR uCLinux 在线调试软件。EV44B0II 是一个适用用于手持设备和一般应用的S3C44B0X处理器的开发平台。,EV44B0II功能模块,EV44B0II有6个ROM/SRA

3、M bank和2个ROM/SRAM/SDRAM bank,S3C44B0X 可以控制总线宽度和存取时间,存取时间由BANKCON07,总线宽度由BWSCON配置。,存储地址空间分布,存储地址空间分配,5.1 MICETEC EV44B0开发板简介,-地址空间配置参数,存储地址空间分配,5.1 MICETEC EV44B0开发板简介,-地址空间配置参数,存储地址空间分配,5.1 MICETEC EV44B0开发板简介,-地址空间配置参数,存储地址空间分配,5.1 MICETEC EV44B0开发板简介,-配置程序如下:,存储地址空间分配,LDR r0,=SMRDATALDMIA r0,r1-r1

4、3LDR r0,=0 x01c80000;BWSCON AddressSTMIA r0,r1-r13.SMRDATA:.word 0 x11110092 BWSCON.word 0 x00000600 GCS0,boot ROM.word 0 x00007FFC GCS1,Ethernet.word 0 x00007FFC GCS2,USB.word 0 x00007FFC GCS3,8-SEG.word 0 x00007FFC GCS4,not use.word 0 x00007FFC GCS5,not use,5.1 MICETEC EV44B0开发板简介,-配置程序如下:,存储地址空间分

5、配,.word 0 x00018000 GCS6 SDRAM(Trcd=2,SCAN=8).word 0 x00018000 GCS7 SDRAM(Trcd=2,SCAN=8).word 0 x00820591 Refresh(REFEN=1,TREFMD=0,Trp=3.5(D)or4(SD),Trc=5(S),Tchr=3(D),Ref CNT).word 0 x16 Bank size,32MB/32MB.word 0 x20 MRSR 6(CL=2).word 0 x20 MRSR 7(CL=2),5.1 MICETEC EV44B0开发板简介,I/O口配置,对PA _PG 端口的引脚

6、配置,每个端口包括一个控制寄存器,一个数据寄存器,,5.1 MICETEC EV44B0开发板简介,I/O口配置,-I/O端口初始化程序如下:,rPCONA=0 x1ff;rPDATA=0 x0;rPCONB=0 x1Cf;rPDATC=0 x8400;rPCONC=0 x5F5FFFFF;rPUPC=0 x33ff;rPCOND=0 xaaaa;rPUPD=0 xff;,端口A,5.1 MICETEC EV44B0开发板简介,端口B,端口C,端口D,I/O口配置,-I/O端口初始化程序如下:,rPCONE=0 x2552b;rPUPE=0 x0;rPDATE=0X60;rPCONF=0 x2

7、A;rPUPF=0 x0;rPDATG=0 x0;rPCONG=0 x55FF;rPUPG=0 x0;rSPUCR=0 x7;/上拉禁止。rEXTINT=0 x22222022;/EINT7EINT0下降沿触发。,端口E,5.1 MICETEC EV44B0开发板简介,端口F,端口G,电源,EV44B0II系统采用DC 3.3V(最少850mA)供电,3.3V给MCU的I/O接口供电,3.3V经稳压芯片产生一个2.5V电压给ARM内核供电。,5.1 MICETEC EV44B0开发板简介,时钟,系统时钟源可以由晶体和外部时钟提供,它的选择控制由OM3:2(在nRESET上升沿锁定)来决定。本系

8、统采用10MHz晶体作为时钟源,OM3:2=00 EXTCLK=VDD,5.1 MICETEC EV44B0开发板简介,复位,nRESET至少保持5个时钟的低电平,当nRESET为高电平时,处理器进行初始化操作。,5.1 MICETEC EV44B0开发板简介,MBL介绍,MBL(Micetec Boot Loader)是驻留在EV44B0II板的一段小程序,约80KB。它可以打通EV44B0II板的通讯端口,如:Ethernet以太网口、USB口和串口,使板可以直接与PC机相连,从而达到下载和调试uClinux或其他应用程序。它驻留在低2MB的FLASH中,,5.1 MICETEC EV44

9、B0开发板简介,MBL介绍,5.1 MICETEC EV44B0开发板简介,MBL介绍,在上电复位时,Flash的基址是0 x0。所以MBL就会立刻被启动运行。在启动后,MBL把自己的代码拷贝到板子上SDRAM中,其他空间(约7M Bytes)可以用来下载Linux Image文件或其他应用程序,这些程序下载到SDRAM中的默认地址是0 x0c008000。,5.1 MICETEC EV44B0开发板简介,MBL介绍,5.1 MICETEC EV44B0开发板简介,第5章 目录,1.MICETEK EV44B0II开发板2.存储器电路设计及编程3.网络、USB和IIS电路设计及编程4.人机接口

10、电路设计及编程5.串行接口电路设计及编程,6 IIC接口电路设计及编程7 其他接口电路设计及编程,5.2 存储器电路设计及编程,BooT FLASH 电路及编程,EV44B0II存储系统包括一片1M16位的FLASH(29LV160TE)和一片4M16位的SDRAM(KM416S4020B)。,FLASH连接电路,-简介,处理器通过片选nGCS0与片外FLASH芯片连接,5.2 存储器电路设计及编程,BooT FLASH 电路及编程,HY29LV160是HYUNDAI公司生产的Flash存储器。HY29LV160操作编程命令包括读、擦除、编程和复位等命令,-29LV160TE芯片擦除,5.2

11、存储器电路设计及编程,BooT FLASH 电路及编程,29LV160TE芯片具有3种擦除方式:整片擦除、扇区擦除和快擦除,-29LV160TE芯片擦除,扇区擦除,:RESET();/芯片复位 _WR(0 x555,0 xaa);_WR(0 x2aa,0 x55);_WR(0 x555,0 x80);_WR(0 x555,0 xaa);_WR(0 x2aa,0 x55);_WR(BADDR2WADDR(targetAddr),0 x30);_WAIT();/等待擦除结束 _RESET();/芯片复位:,5.2 存储器电路设计及编程,BooT FLASH 电路及编程,-编程写入,int F29L

12、V160_ProgFlash(U32 realAddr,U16 data)volatile U16*tempPt;int temp,count=0;tempPt=(volatile U16*)realAddr;_WR(0 x555,0 xaa);_WR(0 x2aa,0 x55);_WR(0 x555,0 xa0);*tempPt=data;return _WAIT();,判断写入是否完成的_WAIT()的过程,5.2 存储器电路设计及编程,BooT FLASH 电路及编程,-编程写入,int _WAIT(void)/检测DQ6输出是否停止翻转 volatile U16 flashStatus

13、,old;old=*(volatile U16*)0 x0);while(1)flashStatus=*(volatile U16*)0 x0);if(old,5.2 存储器电路设计及编程,BooT FLASH 电路及编程,-编程写入,flashStatus=*(volatile U16*)0 x0);if(old详细程序参见EV44B0II实验程序。,5.2 存储器电路设计及编程,SDRAM电路设计及编程,-电路,SDRAM分成4个Bank,每个Bank的容量为1Ml6位。在每个Bank中,分别用行地址脉冲选通RAS和列地址脉冲选通CAS进行寻址。SDRAM由MCU专用SDRAM片选信号nS

14、CS0选通,地址空间为0 x0C0000000 x0C800000。,5.2 存储器电路设计及编程,SDRAM电路设计及编程,-编程,对特定地址的写入和读出操作:#define _WR(addr,data)*(U16*)(addr1)=(U16)data#define _RD(addr)(*(U16*)(addr1),第5章 目录,1.MICETEK EV44B0II开发板2.存储器电路设计及编程3.网络、USB和IIS电路设计及编程4.人机接口电路设计及编程5.串行接口电路设计及编程,6 IIC接口电路设计及编程7 其他接口电路设计及编程,5.3网络、USB和IIS电路设计及编程,网络接口,

15、SMSC9113同时具备MAC层和PHY物理接口功能芯片,它使用中断通知S3C44B0X数据的发送和接收。S3C44b0X是使用nGCS1和数据地址线访问SMSC9113的内部寄存器和缓冲区。,电路结构,隔离变压器,5.3 存储器电路设计及编程,USB电路,USB接口电路示意图,5.3 存储器电路设计及编程,IIS电路设计及编程,IIS即音频数据接口,S3C44B0X的IIS接口可与UDAl341TS的BCK、WS、DATAI、DATAO和SYSCLK相连。通过这个接口,微处理器能够对UDAl341TS中的数字音频处理参数和系统控制参数进行配置。但是S3C44B0X中没有设该专用接口,可通过通

16、用I/O口进行扩展。,-电路接口,5.3 存储器电路设计及编程,IIS电路设计及编程,-电路接口,IIS接口电路示意图,5.3 存储器电路设计及编程,IIS电路设计及编程,IISInit()是初始化IIS接口函数,-编程,void IISInit(void)rPCONE=(rPCONE/初始化UDA1341芯片,5.3 存储器电路设计及编程,IIS电路设计及编程,IISInit()=init341(),-编程,void Init1341()/配置与L3接口相连的I/O口 rPCONA=0 x1ff;/设置PA9为输出,PA9连接L3D rPCONB=0 x7CF;/设置连接L3M的PB5和连接

17、L3C的PB4端口,5.3 存储器电路设计及编程,IIS电路设计及编程,IISInit()=init341(),-编程,rPDATB=L3M|L3C;/设置起始L3M和L3C输出高/电平,通过L3总线初始化1341芯片 _WrL3Addr(0 x14+2);/写状态地址000101x=10_WrL3Data(0 x60,0);/0,1,10,000,0复位,256fs,无/直流滤波器,IIS_WrL3Addr(ox14+2);/写状态地址000101xx+10_WrL3Data(0 x20,0);/0,0,10,000,0无复位,256fs,无直流滤波器,IIS,5.3 存储器电路设计及编程,

18、IIS电路设计及编程,IISInit()=init341(),-编程,_WrL3Addr(0 x14+2);/写状态地址000101xx+10_WrL3Data(0 x81,0);/1,0,0,0,0,0,11 OGS=0,IGS=0,ADC_NI/DAC_NI,sngl speed,AonDon_WrL3Addr(0 x14+0);/写DATA0地址000101xx+10_WrL3Data(0 x0A,0);,_WrL3Addr(U8 data)通过L3总线接口写控制数据地址(data)到1341芯片,_WrL3Data(U8 data,int halt)通过L3总线接口写控制数据(data

19、和停止操作)到1341芯片,5.3 存储器电路设计及编程,IIS电路设计及编程,Playwave()是播放wav文件函数,-编程,void Playwave()int sound_len,i;unsigned short*pWavFile;pWavFile=(unsigned short*)0 xC030000;/wav文件数据地址 rINTMOD=0 x0;rINTCON=0 x1;/使能中断,Playwave()程序运行前须将wav文件下载到指定RAM区域,地址为0 xC030000,5.3 存储器电路设计及编程,IIS电路设计及编程,Playwave()是播放wav文件函数,-编程,pI

20、SR_BDMA0=(unsigned)BDMA0_Done;/设置BDMA中断 rINTMSK=(BIT_GLOBAL|BIT_BDMA0);for(;)/循环播放声音文件/初始化变量iDMADone=0;/初始化DMA中断结束标志sound_len=155956;/设置声音数据长度,未处理文/件头,5.3 存储器电路设计及编程,IIS电路设计及编程,Playwave()是播放wav文件函数,-编程,rBDISRC0=(130)+(128)+(int)(pWavFile);/DMA源:16位数据,增长方/式,外存储区rBDIDES0=(130)+(328)+(int)rIISFIF);/DMA

21、目的:M2IO,内部模块,IISFIF/设置DMA请求源为IIS,中断方式,自动重载,使能DMArBDICNT0=(130)+(126)+(322)+(021)+(120)+sound_len;rBDCON0=0X02;,5.3 存储器电路设计及编程,IIS电路设计及编程,Playwave()是播放wav文件函数,-编程,/IIS初始化 rIISCON=0 x22;/使能发送DMA,接收空闲,使能分频 rIISMOD=0 xC9;/主模式,发送,发送模式,左通道 低电平,/IIS格式,16位/数据,256fs,32fs rIISPSR=0 x22;/分频因子 rIISFCON=0 xF00;/

22、接收、发送DMA模式,使能FIFO rIISCON|=0 x1;/使能IIS while(iDMADone=0);/等待直到DMA传送结束 rIISCON=0 x0;/禁止IIS,5.3 存储器电路设计及编程,IIS电路设计及编程,BDMA0中断处理函数,-编程,BDMA0_Done()是BDMA0中断处理函数。void BDMA0_Done(void)rI_ISPC=BIT_BDMA0;/清除中断挂起位 iDMADone=1;/设置中断结束标志,第5章 目录,1.MICETEK EV44B0II开发板2.存储器电路设计及编程3.网络、USB和IIS电路设计及编程4.人机接口电路设计及编程5.

23、串行接口电路设计及编程,6 IIC接口电路设计及编程7 其他接口电路设计及编程,5.4 人机接口电路设计及编程,键盘电路设计及编程,-电路,5.4 人机接口电路设计及编程,键盘电路设计及编程,-电路,该键盘采用中断扫描方式进行工作,行线选用PORTG47输出,列线选用PORTF58为输入。行线接上拉电阻保持高电平,并通过“与”门将输出信号与MCU的中断EXINT0连接;列线接上拉电阻保持高电平。,5.4 人机接口电路设计及编程,键盘电路设计及编程,-编程,I/O口初始化和中断初始化,5.4 人机接口电路设计及编程,键盘电路设计及编程,-编程,I/O口初始化和中断初始化,rPDATE=0X60;

24、rPCONF=0 x2A;/列线PORTF58为输入 rPUPF=0 x0;/列线接上拉电阻 rPDATG=0 x0;rPCONG=0 x55FF;/行线PORTG47输出,/PORTG0作为EXINT0连接rPUPG=0 x0;/行线接上拉电阻,5.4 人机接口电路设计及编程,键盘电路设计及编程,-编程,I/O口初始化和中断初始化,rINTCON=0 x5;/非向量模式,IRQ 允许,FIQ 禁止rINTMOD=0 x0;/全部IRQ 模式rINTMSK=(BIT_GLOBAL|BIT_EINT0);/EXINT0允许,所有中断屏蔽位允许pISR_EINT0=(unsigned)keyboa

25、rd_ISR;/指定中断服务程序,5.4 人机接口电路设计及编程,键盘电路设计及编程,-编程,void keyboard_ISR(void)程序,将行线PORTG47输出为低电平,当有键盘按下时,该行线被拉为低电平,使得EXINT0输入也为低电平,MCU产生中断。中断产生后通过对键盘的行和列进行扫描的方法,可以计算出是哪个键按下,并跳到相应的键盘处理程序中去。,5.4 人机接口电路设计及编程,键盘电路设计及编程,-编程,void keyboard_ISR(void)程序,void keyboard_ISR(void)char x,y,xrecord,yrecord,temp;rI_ISPC=B

26、IT_EINT0;/clear pending_bit Delay(400);/delay 40ms if(rPDATF&0 x1E0)=0 x1E0),5.4 人机接口电路设计及编程,键盘电路设计及编程,-编程,void keyboard_ISR(void)程序,return 0;/no keyboard press,return else x=1;y=1;xrecord=(rPDATF while(xrecord!=0 x1)/judge row,5.4 人机接口电路设计及编程,键盘电路设计及编程,-编程,void keyboard_ISR(void)程序,x=x+1;xrecord=xr

27、ecord1;if(xrecord=0)rPDATG=0X0F;/no,return return 0;Delay(200);/delay 20ms,5.4 人机接口电路设计及编程,键盘电路设计及编程,-编程,void keyboard_ISR(void)程序,rPDATG=0XEF;/input highwhile(rPDATF,5.4 人机接口电路设计及编程,键盘电路设计及编程,-编程,void keyboard_ISR(void)程序,Delay(200);/delay 10msyrecord=(rPDATG,5.4 人机接口电路设计及编程,键盘电路设计及编程,-编程,void keyb

28、oard_ISR(void)程序,Led_Display(x+(y-1)*4-1);Uart_Printf(%3d,x+(y-1)*4-1);Delay(1200);/delay 40ms rPDATG=0X0F;,5.4 人机接口电路设计及编程,LCD接口电路设计及编程,-LCD接口信号,EV44B0 II现配有160240的单色显示屏,4比特单扫描。EV44B0 II将LCD控制信号线连接到JP6上,与LCD模块相连,,显示缓冲区与LCD像素对应关系图,5.4 人机接口电路设计及编程,LCD接口电路设计及编程,-编程,设置I/O控制寄存器,rPDATC=0 x8400;rPCONC=0 x

29、5F5FFFFF;rPUPC=0 x33ff;/should be enabledrPCOND=0 xaaaa;rPUPD=0 xff;,5.4 人机接口电路设计及编程,LCD接口电路设计及编程,-编程,LCD初始化,void Lcd_MonoInit(void)/160 x240 1bit/1pixel LCD#define MVAL_USED 0rLCDCON1=(0)|(15)|(MVAL_USED7)|(0 x38)|(0 x310)|(CLKVAL_MONO12);/disable,4B_SNGL_SCAN,WDLY=8clk,WLH=8clk,rLCDCON2=(LINEVAL)|

30、(HOZVAL10)|(1021);/LINEBLANK=10,5.4 人机接口电路设计及编程,LCD接口电路设计及编程,-编程,LCD初始化,rLCDSADDR1=(0 x022)1);/monochrome,LCDBANK,LCDBASEUrLCDSADDR2=M5D(U32)frameBuffer1+(SCR_X SIZE*LCD_YSIZE/8)1)|(MVAL21)|(129);rLCDSADDR3=(LCD_XSIZE/16)|(SCR_X SIZE-LCD_XSIZE)/16)9);rLCDCON1=(1)|(15)|(MVAL_USED7)|(0 x38)|(0 x310)|(

31、CLKVAL_MONO12);/enable,4B_SNGL_SCAN,WDLY=8clk,WLH=8clk,5.4 人机接口电路设计及编程,LCD接口电路设计及编程,-编程,LCD显示程序,#define frameBuffer1 0 xc400000extern unsigned char*Buf;void displaylcd(void)unsigned int*pbuffer,temp_data;int i;pbuffer=(U32*)frameBuffer1;for(i=0;i(4800/4);i+)temp_data=(Bufi*4+3 24)+(Bufi*4+2 16)+(Buf

32、i*4+1 8)+(Bufi*4);pbufferi=temp_data;,5.4 人机接口电路设计及编程,LCD接口电路设计及编程,-编程,LCD显示程序,Delay(10);,5.4 人机接口电路设计及编程,LCD接口电路设计及编程,-编程,LCD清屏程序,void clrscreen(void)int i,j;unsigned int*pbuffer;pbuffer=(U32*)frameBuffer1;for(i=0;i4800/4;i+)pbufferi=0;/(0 x0FFFFFFFF);,5.4 人机接口电路设计及编程,触摸屏设计及编程,-工作原理,触摸屏按其工作原理的不同分为表

33、面声波屏、电容屏、电阻屏和红外屏几种,电阻触摸屏的结构,当手指或笔触摸屏幕时(图c),平常相互绝缘的两层导电层就在触摸点位有了一个接触,因其中一面导电层(顶层)接通X 轴方向的5V 均匀电压场(图a),,使得检测层(底层)的电压由零变为非零,控制器侦测到这个接通后,进行A/D 转换,并将得到的电压值与5V 相比即可得触摸点的X 轴坐标为(原点在靠近接地点的那端):,Xi=LxVi/V(即分压原理)同理得出Y 轴的坐标,这就是所有电阻触摸屏共同的最基本原理。,5.4 人机接口电路设计及编程,触摸屏设计及编程,-电路控制,选取 GPG 口与 ADS7843 接口。共运用了 PG2PG7 口共 6

34、条口线。你也可以选择其它的 I/O 口,但注意不要与 I/O 口上已经设定的功能(例如串口)相冲突。参考电路图如下:按照下图用导线将两个模块连接起来。,触摸屏的控制结构,5.4 人机接口电路设计及编程,触摸屏设计及编程,-编程,PG6和PG5输入,PG4PG2输出,PG7作为中断EINT7且加内部上拉电阻,初始化语句如下:rPCONG=0 x015f;rPUPG&=0 x80;,PCONG 寄存器配置,5.4 人机接口电路设计及编程,触摸屏设计及编程,-编程,ADS7843 编程,S为数据传输起始标志位,该位必为,通道选择,选择A/D转换的精度,5.4 人机接口电路设计及编程,触摸屏设计及编程

35、,-编程,ADS7843 编程,参考电压的输入模式,5.4 人机接口电路设计及编程,触摸屏设计及编程,-编程,ADS7843 编程,PD1和PD0选择省电模式:00-为省电模式允许,在两次A/D转换之间掉电,且中断允许;01同00,只是不允许中断;10保留;11禁止省电模式。,5.4 人机接口电路设计及编程,触摸屏设计及编程,-触摸屏与显示器的配合,ADS7843 送回控制器的X 与Y 值仅是对当前触摸点的电压值的A/D 转换值,它不具有实用价值。如果想得到体现LCD 坐标的触摸屏位置,还需要在程序中进行转换。,假设LCD 分辨率是320240,坐标原点在左上角;触摸屏分辨率是900900,坐

36、标原点在左上角,则转换公式如下:xLCD=320*(x-x2)/(x1-x2);yLCD=240*(y-y2)/(y1-y2);,5.4 人机接口电路设计及编程,触摸屏设计及编程,-触摸屏与显示器的配合,ADS7843 送回控制器的X 与Y 值仅是对当前触摸点的电压值的A/D 转换值,它不具有实用价值。如果想得到体现LCD 坐标的触摸屏位置,还需要在程序中进行转换。,如果坐标原点不一致,比如LCD 坐标原点在右下角,而触摸屏原点在左上角,则还可以进行如下转换:xLCD=320-320*(x-x2)/(x1-x2);yLCD=240-240*(y-y2)/(y1-y2);,5.4 人机接口电路设

37、计及编程,8段数码管电路设计及编程,-电路设计,CPU数据总线DATA(07)经74LS573驱动器对数码管进行驱动。其片选信号由CPU的nGCS3信号选通,而8段的内容则由CPU低8位数据线决定。口地址为0 x6000000,电路图,5.4 人机接口电路设计及编程,8段数码管电路设计及编程,-电路设计,5.4 人机接口电路设计及编程,8段数码管电路设计及编程,-编程,8段数码管显示程序如下:void Led_Display(unsigned char data)unsigned char*ledbuffer=(unsigned char*)0 x6000000 switch(data)cas

38、e 0:*ledbuffer=0 x12;break;.case 0 xf:*ledbuffer=0 x68;break;,第5章 目录,1.MICETEK EV44B0II开发板2.存储器电路设计及编程3.网络、USB和IIS电路设计及编程4.人机接口电路设计及编程5.串行接口电路设计及编程,6 IIC接口电路设计及编程7 其他接口电路设计及编程,5.5串行接口电路设计及编程,串行电路接口,串行接口电路,PORTC1015分别作为nRTS1、nCTS1、TXD1、RXD1、nRTS0和nCTS0信号,PE1和PE2作为TXD0和RXD0信号,5.5串行接口电路设计及编程,编程,I/O接口配置

39、初始化,对PORTC和PORTE初始化语句如下:rPCONC=0 x0f000000|rPCONC;rPUPC=0 x3000;/设置内部上拉 rPCONE=(rPCONE,5.5串行接口电路设计及编程,编程,UART初始化,;rUFCON0=0 x0;/不使用 FIFOrUMCON0=0 x0;/不使用自动流控制rULCON0=0 x3;/不采用红外线传输模式,/无奇偶校验位,1 个停止位/8个数据位;,5.5串行接口电路设计及编程,编程,字符发送,#define WrUTXH0(ch)(*(volatile unsigned char*)0 xld00020)=(unsigned char

40、)(ch)#define WrUTXH0(ch)(*(volatile unsigned char*)0 xld04020)=(unsigned char)(ch)Void myUart_SendByte(char ch)if(UartNum=0)if(ch=“n”)while(!(rUTRSTAT0/发送回车符,5.5串行接口电路设计及编程,编程,字符发送,/发送回车符 while(!(rUTRSTAT0/发送字符 if(UartNum=0)if(ch=“n”),5.5串行接口电路设计及编程,编程,字符发送,while(!(rUTRSTAT0/发送字符,5.5串行接口电路设计及编程,编程,字

41、符接收,#define RdURXH0()(*(volatile unsigned char*)(0 xld00027)#define RdURXH1()(*(volatile unsigned char*)(0 xld04027)Char Uart_Getch(void)if(whichUart=0)/串口0 while(!(rUTRSTAT0/读出接收到的/数据(一直到读完),5.5串行接口电路设计及编程,编程,字符接收,return RdURXH0();/URXH0:UART0接收缓冲寄存器 else/串口1 while(!(rUTRSTAT1,第5章 目录,1.MICETEK EV44

42、B0II开发板2.存储器电路设计及编程3.网络、USB和IIS电路设计及编程4.人机接口电路设计及编程5.串行接口电路设计及编程,6 IIC接口电路设计及编程7 其他接口电路设计及编程,5.6 C接口电路设计及编程,EEPROM芯片介绍,目前,通用存储器芯片多为EEPTOM,其常用的协议主要有两线串行连接协议(C)和三线串行连接协议。带C总线接口的EEPROM有许多型号,其中AT24Cxx系列使用十分普遍,产品包括AT2401/02/04/08/16等,其容量(字节数页)分别为1288/2568/5128/10248/20488,适用于25V的低电压操作,具有低功耗和高可靠性等优点。,5.6

43、C接口电路设计及编程,EEPROM芯片介绍,AT24CXX标准引脚图,串行时钟,双向数据线,器件/页面寻址地址输入端,读/写保护,5.6 C接口电路设计及编程,AT24C04XX的数据操作格式,在IIC总线中,对AT24C04内部存储单元读写,除了要给出器件的设备地址(DADDR)外,还须指定读写的页面地址(PADDR)。系统中引脚A2A1A0为000,因此,系统可寻址AT24C04全部页面,共4K位。按照AT24C04器件手册读写地址(ADDR1010 A2 A1R/W)中的数据操作格式不同。,-简介,5.6 C接口电路设计及编程,AT24C04XX的数据操作格式,写入操作格式为:START

44、_C OPADDR_W ACK ADDR_W ACK data ACK STOP_C 任意写一个字节到地址ADDR_W,其时序图如下,,-写入操作格式,5.6 C接口电路设计及编程,AT24C04XX的数据操作格式,写人格式为:START_C OPADDR_W ACK ADDR_W ACK data1 ACK data2 ACK.datan ACK STOP_C从地址ADDR_W起连续写人n个字节(同一页面),其时序图如下:,-写入操作格式,5.6 C接口电路设计及编程,AT24C04XX的数据操作格式,读出操作格式为:START_C OPADDR_W ACK ADDR_R ACK OPADD

45、R_R ACK data STOP_C从任意地址ADDR_R读一个字节的时序图如下:,-读出操作格式,5.6 C接口电路设计及编程,AT24C04XX的数据操作格式,读出操作格式为:START_C OPADDR_R ACK data1 ACK data2 ACK.datan ACK STOP_C从地址ADDR_R起连续读出n个字节(同一页面)如下:,-读出操作格式,5.6 C接口电路设计及编程,AT24C04XX的数据操作格式,在读任意地址操作中,除了发送读地址外,还要发送页面地址(PADDR);因此,在连续读出72个字节操作前,要进行1个字节PADDR写入操作,然后重新启动读操作。:,-读出

46、操作格式,5.6 C接口电路设计及编程,编程,采用PF0口和PF1口工作在第2功能模式下,分别作为 IIC总线的SCL和SDA与24LC04B相连。,-I/O端口IIC功能设置,需要设置PF0和PF1工作在第2功能模式下。采用以下语句:rPCONF|=0 xa;/PF0:IICSCL,PF1:IICSDA rPUPF|=0 x3;/pull-up disable,5.6 C接口电路设计及编程,编程,由于是采用中断的方式了解每个字节的传输是否成功。因此需要定义中断处理程序入口,并且使能中断。,-IIC中断使能,pISR_IIC=(unsigned)IIC_Int;/将 IIC 中断处理程序指针指

47、向 IIC_Int rINTMSK=(BIT_GLOBAL|BIT_IIC);/使能中断,5.6 C接口电路设计及编程,编程,对 IICCON 进行设置,-初始化IIC接口,rIICCON=(17)|(06)|(15)|(0 xf);/使能 ACK的产生,IICCLK=MCLK/16,使能发送/接收中断,清除 pending 位以便响应/中断,Tx clock(64MHz/16)/(15+1)=250KHz,5.6 C接口电路设计及编程,编程,向24LC04B中写入数据子程序,-向24LC04B中写入数据子程序,void Wr24LCxx(U32 slvAddr,U32 addr,U8 dat

48、a)_iicMode=WRDATA;/写数据模式 _iicPt=0;_iicData0=(U8)addr;/字节写入模式,数据格式 参考教材内容 _iicData1=data;_iicDataCount=2;rIICDS=0 xa0;/控制字节,5.6 C接口电路设计及编程,编程,向24LC04B中写入数据子程序,rIICSTAT=0 xf0;/主设备发送模式,产生起 始条件,使能发送/接收 while(_iicDataCount!=-1);_iicMode=POLLACK;while(1)rIICDS=slvAddr;_iicStatus=0 x100;rIICSTAT=0 xf0;/Mas

49、Tx,Start rIICCON=0 xaf;/resumes IIC operation.while(_iicStatus=0 x100);if(!(_iicStatus&0 x1),-向24LC04B中写入数据子程序,5.6 C接口电路设计及编程,编程,向24LC04B中写入数据子程序,-初始化IIC接口,break;/成功接收到 ACK rIICSTAT=0 xd0;/产生停止条件 rIICCON=0 xaf;/释放 IIC 操作 Delay(1);/等待,直到停止条件起作用,写入成功,5.6 C接口电路设计及编程,编程,-从24LC04B读出数据子程序,void Rd24LCxx(U3

50、2 slvAddr,U32 addr,U8*data)_iicMode=SETRDADDR;_iicPt=0;_iicData0=(U8)addr;_iicDataCount=1;rIICDS=slvAddr;rIICSTAT=0 xf0;/MasTx,Startwhile(_iicDataCount!=-1);_iicMode=RDDATA;,5.6 C接口电路设计及编程,编程,-从24LC04B读出数据子程序,_iicPt=0;_iicDataCount=1;rIICDS=slvAddr;rIICSTAT=0 xb0;/MasRx,StartrIICCON=0 xaf;/resumes I

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号