DSP8-串行通讯单元_第1页
DSP8-串行通讯单元_第2页
DSP8-串行通讯单元_第3页
DSP8-串行通讯单元_第4页
DSP8-串行通讯单元_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

第八讲串行通讯单元(一)、F28335的SCI(二)、F28335的SPI(三)、F28335的I2CEmail:zdh2010_1234@163.com密码:zdh2010串行通讯单元——SCI(一)、F28335的SCI的特点及通讯方式(一)、F28335的SCI的特点及通讯方式(二)、F28335的SCI的数据格式(三)、F28335的SCI的多处理器方式(四)、F28335的SCI的重要寄存器2023/2/53F28335SCI模块特点2个外部引脚:SCITXD/SCIRXD2种工作模式:全双工、半双工波特率:可编程达到64K不同的速率双缓冲接受发送模式16级发送接受FIFO(发送8bit、接受16bit)自动波特率检测硬件逻辑2个唤醒多处理器模式:空闲线及地址位F28336SCI通信模块SCI可编程数据格式StartLSB23457MSBParityStop1Addr/Data6只在地址模式种有效Stop2NRZ(nonreturntozero)formatStartBitLSBofData多数表决FallingEdgeDetectedSCIRXDSCICLK(Internal)1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2Note:8SCICLK/每个数据位多处理器唤醒方式定义:允许一个处理器在同一个串行线上有效的向其他处理器发送数据块2种模式:地址线空闲;地址位操作顺序设置SLEEP=1,当地址被检测的时候处理器才能被中断,软件清零所有的传输都是以地址帧开始接收到的地址帧临时唤醒所有BUS上的处理器处理器比较收到的SCI地址与本身的SCI地址(匹配)只有当地址匹配的时候处理器才开始接受数据空闲线多处理器方式帧内块的空闲块在SCIRXD变高10个位(或更多)之后,接收器在下降沿之后被唤醒2种发送快启动信号前一数据块的最后一帧的发送与下一数据块的地址帧的发送之间时间延长,能产生一段10bit或更长的空闲时间设置TXWAKE(SCICTL1.3)=1,产生11bit的空闲时间地址位唤醒方式所有帧都包含一个额外的地址位,判决地址/数据当地址位被检测到的时候唤醒只要在SCITXBUF写入地址前置位TXWAKE=1,自动设置帧内数据/地址的设定SCI的波特率具有2个8位波特率寄存器SCIHBAUD:SCILBAUD共同构成16位长度,因此可支持64K个编程速率。

SCI-A寄存器Address Register Name0x007050 SCICCR SCI-A通信控制寄存器0x007051 SCICTL1 SCI-A控制寄存器10x007052 SCIHBAUD SCI-A波特率寄存器,高位0x007053 SCILBAUD SCI-A波特率寄存器,低位0x007054 SCICTL2 SCI-A控制寄存器20x007055 SCIRXST SCI-A接受状态寄存器0x007056 SCIRXEMU SCI-A接受仿真数据寄存器0x007057 SCIRXBUF SCI-A接受数据寄存器0x007059 SCITXBUF SCI-A发送数据寄存器0x00705A SCIFFTX SCI-AFIFO发送寄存器0x00705B SCIFFRX SCI-AFIFO接受寄存器0x00705C SCIFFCT SCI-AFIFO控制寄存器0x00705F SCIPRI SCI-A极性控制寄存器SCI-A通信控制寄存器SCICCRADDR/IDLEMODESTOPBITSEVEN/ODDPARITYPARITYENABLELOOPBACKENABLESCICHAR2SCICHAR1SCICHAR00=1Stopbit1=2Stopbits0=Odd1=Even0=Disabled1=Enabled0=Disabled1=Enabled0=Idle-linemode1=Addr-bitmode76543210#ofdatabits=(binary+1)e.g.110bgives7databitsTXWAKEreservedRXERRINTENASWRESETreservedSLEEPTXENARXENA0=ReceiveErrorInterruptdisabled1=ReceiveErrorInterruptenabledWrite0=ResetSCIWrite1=releasefromResetTransmitterwakeupmethodselect1=wakeupmodedependsonSCICCR.30=nowakeupmode765432100=sleepmodedisabled1=sleepmodeenabled0=transmitterdisabled1=transmitterenabled0=receiverdisabled1=receiverenabledSCI-A控制寄存器1SCICTL1TXRDYTXEMPTYRX/BKINTENASCI-A控制寄存器2SCICTL20TXINTENA1765-2reservedSCITXREADY0=SCITXBUFisfull1=SCITXBUFisemptySCITXEMPTY0=TXBUForshiftregisterareloadedwithdata1=Transmitbufferandshiftregisterbothemptyreserved15-8[SCI-BControlRegister2(SCICTL2)–0x007754]SCITXINTENA0=DisableTXRDYinterrupt1=EnableTXRDYinterruptSCIRX/BKINTENA0=DisableRXRDY/BRKDTinterrupt1=EnableRXRDY/BRKDTinterrupt接受状态寄存器SCIRXSTOERXERRORRXRDYBRKDTFEPERXWAKEreserved0=Noerrorflagsset1=Errorflag(s)set0=nonewcharacterinSCIRXBUF1=newcharacterinSCIRXBUF1=Breakconditionoccurred0=nobreakcondition765432101=FramingErrordetected1=OverrunErrordetected1=ParityErrordetected1=ReceiverwakeupconditiondetectedFIFO发送寄存器SCIFFTX0TXFFIL2SCIFFENATXFFST0TXFFST3TXFFIENA123456789101112131415TXFFIL0TXFFIL1TXFFIL4TXFFIL3TXFFST1TXFFINTCLRTXFFST2TXFFINTTXFFST4TXFIFORESETSCIRSTTXFIFOStatus(read-only)00000 TXFIFOempty00001 TXFIFOhas1word00010 TXFIFOhas2words10000 TXFIFOhas16words......TXFIFOInterruptLevelInterruptwhenTXFFST4-0andTXFFIL4-0matchSCIFIFO0=disable1=enableTXFIFOReset0=reset(pointerto0)1=enableoperationTXFIFOInterrupt(onmatch)Enable0=disable1=enableTXFIFOInterruptFlag(read-only)0=notoccurred1=occurredTXFIFOInterruptFlagClear0=noeffect1=clearSCIReset0=reset1=enableoperation0RXFFIL2RXFF-OVFCLRRXFFST0RXFFST3RXFFIEN123456789101112131415RXFFIL0RXFFIL1RXFFIL4RXFFIL3RXFFST1RXFFINTCLRRXFFST2RXFFINTRXFFST4RXFIFORESETRXFF-OVFRXFIFOStatus(read-only)00000 RXFIFOempty00001 RXFIFOhas1word00010 RXFIFOhas2words10000 RXFIFOhas16words.........RXFIFOInterruptLevelInterruptwhenRXFFST4-0andRXFFIL4-0matchRXFIFOReset0=reset(pointerto0)1=enableoperationRXFIFOInterrupt(onmatch)Enable0=disable;1=enableRXFIFOInterruptFlag(read-only)0=notoccurred1=occurredRXFIFOInterruptFlagClear0=noeffect1=clearRXFIFOOverflowFlag(read-only)0=nooverflow1=overflowRXFIFOOverflowFlagClear0=noeffect1=clearFIFO接收寄存器SCIFFRX0ABDCLR123456789101112131415CDCABDFFTXDLYTimedelaybetweeneverytransferfromFIFOtotransmitshiftregisterinnumberofSCIbaudclockcycles(0to255)CDCcalibrate‘A’0=disabledauto-baudalignment1=enablesauto-baudalignmentAutoBauddetectionFlag(read-only)0=notcomplete1=completeAutoBauddetectionFlagClear0=noeffect1=clearreservedFIFO控制寄存器SCIFFCT串行通讯单元——SPI(一)、F28335的SPI的特点及工作流程(二)、F28335的SPI的数据传输方式(三)、F28335的SPI的数据格式(四)、F28335的SPI的重要寄存器SPI模块特点4个外部引脚:SPISOMI/SPISIMO/SPISTE/SPICLK2种工作模式:主工作模式、从工作模式波特率:125种不同的可编程速率16级发送和接受FIFO4种时钟配置方法(由时钟极性和时钟相位控制)不带相位延迟的下降沿:SPICLK高有效,SPI在SPICLK下降沿发送数据,上升沿接受数据带有相位延迟的下降沿:SPICLK高有效,SPI在SPICLK的下降沿的前半周期发送数据,下降沿接受不带相位延迟的上升沿:SPICLK低有效,SPI在SPICLK的上升沿发送数据,下降沿接受数据带有相位延迟的上升沿:SPICLK低有效,SPI在SPICLK的下降沿的前半周期发送数据,下降沿接受数据串行外围接口SPI的工作流程SPIShiftRegisterSPIShiftRegisterSPIDevice#1-MasterSPIDevice#2-Slave数据同步传输和接受SPI主设备提供时钟shiftshiftclockSPI功能框图SPI数据格式的调整可编程数据长度1~16发送数据少于16位时需要左调整,MSB先发送接受数据少于16位时需要右调整,用户程序屏蔽MSB11001001XXXXXXXXXXXXXXXX11001001SPIDAT-Processor#1SPIDAT-Processor#2SPI波特率SPI波特率相关设置由寄存器SPIBRR设置当

SPI寄存器Address Register Name0x007040 SPICCR SPI-A配置控制寄存器0x007041 SPICTL SPI-A工作控制寄存器0x007042 SPISTS SPI-A状态寄存器0x007044 SPIBRR SPI-A波特率寄存器0x007046 SPIEMU SPI-A仿真缓冲寄存器0x007047 SPIRXBUF SPI-A串行接受寄存器0x007048 SPITXBUF SPI-A串行发送寄存器0x007049 SPIDAT SPI-A串行数据寄存器0x00704A SPIFFTX SPI-AFIFO发送寄存器0x00704B SPIFFRX SPI-AFIFO接受寄存器0x00704C SPIFFCT SPI-AFIFO控制寄存器0x00704F SPIPRI SPI-A极性控制寄存器SPI控制寄存器SPICCR012765-4reservedSPICHAR.3-0字长控制位e.g. 0000bÞlength=1 1111bÞlength=16SPISWRESET:在改变配置前清除刺位在重新操作开始前设置此位

0=SPIflagsreset1=normaloperationCLOCKPOLARITY 0=上升沿输出/下降沿输入

1=下降沿输入/上升沿输出reserved15-83SPI工作控制寄存器SPICTL01215-543reservedCLOCKPHASE0=noCLKdelay1=CLKdelayed1/2cycleOVERRUNINTENABLE0=禁止接受溢出中断(SPISTS.7)1=使能接受溢出中断(SPISTS.7)MASTER/SLAVE0=slave1=masterTALK0=transmissiondisabled,outputpinhi-Z’d1=transmissionenabledSPIINTENABLE0=disabled1=enabledSPI状态寄存器SPISTS764-0SPIINTFLAG(readonly)传输完成置1如果SPIINTENA设置(SPICTL.0)

则置位读SPIBRXUF清零RECEIVEOVERRUNFLAG(read/clearonly)在SPIRXBUF被读取之前下一次接受完成则1

如果OVERRUNINTENA被设置(SPICTL.4)则中断请求写1置0reservedreserved15-8TXBUFFULL(readonly)

写SPITXBUF置位载入SPIDAT清零5FIFO发送寄存器SPIFFTX0TXFFIL2SPIFFENATXFFST0TXFFST3TXFFIENA123456789101112131415TXFFIL0TXFFIL1TXFFIL4TXFFIL3TXFFST1TXFFINTCLRTXFFST2TXFFINTTXFFST4TXFIFOSPIRSTTXFIFOStatus(read-only)00000 TXFIFOempty00001 TXFIFOhas1word00010 TXFIFOhas2words10000 TXFIFOhas16words.........TXFIFOInterruptLevelInterruptwhenTXFFST4-0andTXFFIL4-0matchSPIFIFO0=disable1=enableTXFIFOReset0=reset(pointerto0)1=enableoperationTXFIFOInterrupt(onmatch)Enable0=disable1=enableTXFIFOInterruptFlag(read-only)0=notoccurred1=occurredTXFIFOInterruptFlagClear0=noeffect1=clear.7SPIRESET0=复位1=无影响FIFO接受寄存器SPIFFRX0RXFFIL2RXFF-OVFCLRRXFFST0RXFFST3RXFFIEN123456789101112131415RXFFIL0RXFFIL1RXFFIL4RXFFIL3RXFFST1RXFFINTCLRRXFFST2RXFFINTRXFFST4RXFIFORESETRXFF-OVFRXFIFOStatus(read-only)00000 RXFIFOempty00001 RXFIFOhas1word00010 RXFIFOhas2words10000 RXFIFOhas16words.........RXFIFOInterruptLevelInterruptwhenRXFFST4-0andRXFFIL4-0matchRXFIFOReset0=reset(pointerto0)1=enableoperationRXFIFOInterrupt(onmatch)Enable0=disable;1=enableRXFIFOInterruptFlag(read-only)0=notoccurred1=occurredRXFIFOInterruptFlagClear0=noeffect1=clearRXFIFOOverflowFlag(read-only)0=nooverflow1=overflowRXFIFOOverflowFlagClear0=noeffect1=clear串行通讯单元——I2C(一)、F28335的I2C总线特点(二)、F28335的I2C总线数据传输原理(三)、F28335的I2C总线时钟生成(四)、F28335的I2C数据格式分析I2C总线只有两根线。一根数据线SDA,另一根是时钟线SCL。所有连接到I2C总线上器件的数据线都连接到SDA线上,时钟线均连接到SCL线上I2C总线基础采用2线制:可以使器件的引脚减少,器件间连接电路设计简单,电路板的体积会有效减小,系统的可靠性和灵活性将大大提高;传输速率高:标准模式传输速率为100kB/s,快速模式为400kB/s,高速模式为3.4MB/s。

I2C的特点I2C总线的数据传输原理对于数据传输,I2C总线协议规定了如下信号时序:I2C总线在传送数据过程中共有三种必需的信号,它们分别是:开始信号、结束信号和应答信号。

起始和停止信号I2C总线的数据传输原理SCL为高电平期间,SDA由高电平向低电平的变化表示起始信号;SCL为高电平期间,SDA由低电平向高电平的变化表示停止信号。总线空闲时,SCL和SDA两条线都是高电平字节格式I2C总线的数据传输原理传输字节数没有限制,但每个字节必须是8位长度。先传最高位(MSB),每个被传输字节后面都要跟随应答位(即一帧共有9位)数据传输时序I2C总线的数据传输原理SCL由主机控制,从器件在自己忙时拉低SCL以表示处于“忙状态”;字节数据由发送器发出,响应位由接收器发出;SCL高电平期间,SDA线数据要稳定,SCL低电平期间,SDA线数据允许更新。寻址字节:支持两种地址格式,7位和10位。I2C总线的数据传输原理7位地址模式:D7~D1位组成从器件的地址。D0位是数据传送方向位。主机发送地址时,总线上的每个从器件都将这7位地址码与自己的地址进行比较。如果相同,则认为自己正被主机寻址

10位地址模式:该地址格式下主机的地址发送分两次完成,首字节数据包括:11110xx,R/W=0(W);第二个字节数据是10位从机地址的低8位。从机必须在每个字节数据后面发送一个应答信号,一旦主机向从机发送完第二个字节数据后,主机可以写数据或者使用循环起始信号模式改变数据流向。I2C总线的数据传输原理I2C总线的时钟生成F28335使用锁相环将DSP的系统时钟频率分频后得到I2C输入时钟频率,I2C输入时钟频率作为I2C模块的频率输入源,再由I2C模块内部分频最终得到I2C模块的工作频率。I2CPSC>=1时,I2C频率=系统频率/(I2CPSC+1)/((I2CCLKL+5)+(I2CCLKH+5));I2CPSC

温馨提示

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

评论

0/150

提交评论