模块模块 8 : C28x 串行通讯接口串行通讯接口32-Bit-Digital Signal ControllerTMS320F2812SCI Pin Connections Transmitter-databuffer registerTransmittershift registerSCI Device #1SCIRXDSCITXDSCITXDSCIRXDSCI Device #28Receiver-databuffer registerReceivershift register8Transmitter-databuffer registerTransmittershift register8Receiver-databuffer registerReceivershift register8(Full Duplex Shown)RX FIFO_0RX FIFO_15RX FIFO_0RX FIFO_15TX FIFO_0TX FIFO_15TX FIFO_0TX FIFO_15SCI-A 可编程数据格式Start LSB23457MSBParityStop 1Addr/Data6该位只有在地址位模式出现该位只有在地址位模式出现Stop 2NRZ (nonreturn to zero) formatStart BitLSB of DataMajorityVote下降沿检测SCIRXDSCICLK(Internal)123456781234567812Note: 8 SCICLK 每个数据位多处理器唤醒模式•允许多个处理器与总线相连,但是同一时间只有两个处理器通讯•空闲线和地址位模式•操作顺序1. 潜在接收器置位 SLEEP = 1, 禁止 RXINT 除非一个地址帧被接收到2. 所有发送都包含地址帧3. 引入的地址帧暂时唤醒所有总线上的 SCIs4. CPUs比较引入的 SCI 地址和自身的SCI 地址5. 只有在地址匹配时才会处理后续数据帧空闲线唤醒模式•块与块之间有一段空闲时间•接收器在SCIRXD 拉高10位或更多空闲周期后的下降沿唤醒•两种发送地址模式–预备的10位或更多空闲周期软件延迟–置位 TXWAKE 以在11个空闲位后自动离开 to automatically leave exactly 11 idle bitsLast DataST SPSTDataSCIRXD/SCITXD帧的一个块 SPSPLast DataSTAddr SP10位或更多空闲周期10位或更多的空闲周期地址帧跟随在10位或更多空闲周期后块中的第一帧 SPSTAddr空闲周期少于10位地址位唤醒模式•所有帧都包含一个额外的地址位•检测到地址位后接收器唤醒•在写地址到SCITXBUF 之前置位TXWAKE = 1 以自动置位帧中的Addr/Data 位 Automatic setting of Addr/Data bit in frame by setting TXWAKE = 1 prior to writing address to SCITXBUFLast DataSTSTDataSCIRXD/SCITXDBlock of Frames SPSPLast DataSTAddr SP无重要性的空闲周期长度块中的首个帧是地址.地址位(ADDR/DATA)为1第一个数据帧0100 SPSTAddr1SP停止位外无需额外的空闲位SCI 小结•异步通讯格式•65,000+ 不同的可编程波特率•两个唤醒多处理模式–空闲线唤醒和地址位唤醒•可编程数据字格式–1 到 8 位数据字长度–1 或 2个结束位–偶数/计数/无奇偶校验•错误检测标志位–奇偶极性错误错误; 帧错误; 溢出错误; 中断检测•FIFO-缓冲发送和接收数据•独自的发送和接收中断SCI-A RegistersAddressRegisterName0x007050SCICCRSCI-A commun. control register0x007051SCICTL1SCI-A control register 10x007052SCIHBAUDSCI-A baud register, high byte0x007053SCILBAUDSCI-A baud register, low byte0x007054SCICTL2SCI-A control register 2 register0x007055SCIRXSTSCI-A receive status register0x007056SCIRXEMUSCI-A receive emulation data buffer0x007057SCIRXBUFSCI-A receive data buffer register0x007059SCITXBUFSCI-A transmit data buffer register0x00705ASCIFFTXSCI-A FIFO transmit register0x00705BSCIFFRXSCI-A FIFO receive register0x00705CSCIFFCTSCI-A FIFO control register0x00705FSCIPRISCI-A priority control registerSCI-A 通信控制寄存器ADDR/IDLEMODESTOPBITSEVEN/ODDPARITYPARITYENABLELOOP BACKENABLESCICHAR2SCICHAR1SCICHAR0Communications Control Register (SCICCR) – 0x007050结束位个数结束位个数0 = 1 结束位结束位1 = 2 结束位结束位偶偶/奇极性选择奇极性选择0 = 奇极性奇极性1 = 偶极性偶极性SCI极性使能极性使能0 = Disabled1 = Enabled回送测试模式回送测试模式使能位使能位0 = Disabled1 = Enabled多处理模式控制位多处理模式控制位0 = 空闲线模式空闲线模式1 = 地址位模式地址位模式76543210字符长度控制位字符长度控制位# of data bits = (binary + 1)e.g. 110b gives 7 data bits[SCI-B Communications Control Register (SCICCR) – 0x007750]SCI-A 控制寄存器 1TXWAKEreservedRX ERRINT ENASWRESETreservedSLEEPTXENARXENAControl Register 1 (SCICTL1) – 0x007051接收中断使能位接收中断使能位0 = 禁止接收错误中断禁止接收错误中断1 = 启动接收错误中断启动接收错误中断SCI 软件复位软件复位Write 0 = Reset SCIWrite 1 = release from ResetSCI发送器以唤醒方式选择控制位发送器以唤醒方式选择控制位1 = 所选择的发送特征依赖于所选择的发送特征依赖于 指定的模式指定的模式0 = no wakeup mode 76543210[SCI-B Control Register 1 (SCICTL1) – 0x007751]SCI睡眠使能位睡眠使能位0 = sleep mode disabled1 = sleep mode enabledSCI发送器使能发送器使能0 = transmitter disabled1 = transmitter enabledSCI 接收器使能接收器使能0 = receiver disabled1 = receiver enabledSCI-A 波特率BAUD15(MSB)BAUD14Baud-Select MSbyte Register (SCIHBAUD) – 0x00705276543210BAUD13BAUD12BAUD11BAUD10BAUD9BAUD8BAUD6Baud-Select LSbyte Register (SCILBAUD) – 0x00705376543210BAUD5BAUD4BAUD3BAUD2BAUD1BAUD7BAUD0(LSB)SCI baud rate =LSPCLK(BRR + 1) x 8LSPCLK16,BRR = 1 to 65535,BRR = 0[SCI-B Baud-Select MSbyte Register (SCIHBAUD) – 0x007752][SCI-B Baud-Select LSbyte Register (SCILBAUD) – 0x007753]TXRDYTX EMPTYRX/BKINT ENASCI-A 控制寄存器 2SCICTL2 @ 0x0070540TXINT ENA1765 - 2reserved发送器缓冲发送器缓冲寄存器就绪标志寄存器就绪标志SCI TX READY 0 = SCITXBUF 满满 1 = SCITXBUF空,准备接收下一个字符空,准备接收下一个字符发送器空标志发送器空标志SCI TX EMPTY0 = 发送缓冲发送缓冲TXBUF或移位寄存器都装载了数据或移位寄存器都装载了数据 1 = 发送缓冲寄存器和移位寄存器都空发送缓冲寄存器和移位寄存器都空reserved15 - 8[SCI-B Control Register 2(SCICTL2) – 0x007754]SCITXBUF寄存器中断使能位寄存器中断使能位SCI TX INT ENA 0 = Disable TXRDY interrupt 1 = Enable TXRDY interrupt接收器缓冲接收器缓冲/中断使能中断使能SCI RX/BK INT ENA 0 = Disable RXRDY/BRKDT interrupt 1 = Enable RXRDY/BRKDT interruptSCI-A 接收器状态寄存器SCIRXST @ 0x007055[SCI-B Receiver Status Register (SCIRXST) – 0x007755]OERXERRORRXRDYBRKDTFEPERXWAKEreserved接收器错误标志位接收器错误标志位0 = No error flags set1 = Error flag(s) set接收器就绪标志位接收器就绪标志位0 = SCIRXBUF中无新的字符中无新的字符1 = SCIRXBUF有新的字符准备被读入有新的字符准备被读入SCI中断检测标志位中断检测标志位1 = 中断条件产生中断条件产生0 = 无中断条件产生无中断条件产生 76543210帧错误标志帧错误标志1 = 检测到帧错误检测到帧错误溢出错误标志溢出错误标志1 = 检测到溢出错误检测到溢出错误奇偶极性错误标志奇偶极性错误标志1 = 检测到奇偶极性错误检测到奇偶极性错误接收器唤醒检测标志接收器唤醒检测标志1 = 检测到接收器唤醒条检测到接收器唤醒条件件SCI-A FIFO 发送寄存器SCIFFTX @ 0x00705A0TXFFIL2SCIFFENATXFFST0TXFFST3TXFFIENA123456789101112131415TXFFIL0TXFFIL1TXFFIL4TXFFIL3TXFFST1TXFFINTCLRTXFFST2TXFFINTTXFFST4TXFIFORESETSCIRSTTX FIFO 状态状态 (read-only)00000TX FIFO 空空00001TX FIFO 有有 1 word00010TX FIFO 有有 2 words00011TX FIFO 有有 3 words10000TX FIFO 有有 16 words.........TX FIFO 中断级位中断级位TXFFST4-0与与TXFFIL4-0匹配是产生中断匹配是产生中断SCI FIFO增强型功能使能位增强型功能使能位0 = disable1 = enableTX FIFO 复位复位0 = 复位后复位后FIFO 指针为指针为01 = 重新使能操作重新使能操作TX FIFO中断使能中断使能0 = 禁止基于禁止基于TXFFIVL匹配的中断匹配的中断1 = 使能基于使能基于TXFFIVL匹配的中断匹配的中断TX FIFO中断标志位中断标志位 (read-only)0 = not occurred1 = occurredTX FIFO中断标志清零位中断标志清零位0 = no effect1 = clearSCI 复位复位0 = reset1 = enable operationSCI-A FIFO 接收寄存器SCIFFRX @ 0x00705B0RXFFIL2RXFF-OVF CLRRXFFST0RXFFST3RXFFIEN123456789101112131415RXFFIL0RXFFIL1RXFFIL4 RXFFIL3RXFFST1RXFFINTCLRRXFFST2RXFFINTRXFFST4RXFIFORESETRXFF-OVFRX FIFO 状态状态s (read-only)00000RX FIFO 空空00001RX FIFO 有有 1 word00010RX FIFO 有有 2 words00011RX FIFO 有有 3 words10000RX FIFO 有有 16 words.........RX FIFO 中断级位中断级位RXFFST4-0与与 RXFFIL4-0 匹配是产生中断匹配是产生中断RX FIFO 复位复位0 = 复位后复位后FIFO 指针位指针位01 = 重新使能接收重新使能接收FIFO 的操作的操作RX FIFO中断使能位中断使能位0 = 禁止基于禁止基于RXFFIVL匹配的中断匹配的中断1 = 使能基于使能基于RXFFIVL匹配的中断匹配的中断RX FIFO中断标志位中断标志位 (read-only)0 = not occurred1 = occurredRX FIFO中断标志清零位中断标志清零位0 = no effect1 = clearRX FIFO溢出标志位溢出标志位 (read-only)0 = no overflow1 = overflowRX FIFO溢出标志清零位溢出标志清零位0 = no effect1 = clearSCI-A FIFO 控制寄存器SCIFFCT @ 0x00705C0ABDCLR123456789101112131415CDCABDFFTXDLY这些位规定了从这些位规定了从FIFO发送缓冲奇到发送移位寄存器之间发送缓冲奇到发送移位寄存器之间每一次传送的延时每一次传送的延时 确定确定 SCI 波特率时钟周期的个数波特率时钟周期的个数( 0 to 255 )CDC 校准自动检测位校准自动检测位0 = 禁止自动检测校准禁止自动检测校准1 = 使能自动检测校准使能自动检测校准自动波特率检测自动波特率检测标志位标志位 (read-only)0 = not complete1 = complete自动波特率检测自动波特率检测标志清零位标志清零位0 = no effect1 = clearreservedSCI Example 1: 发送一个文本发送一个文本 – 字符串字符串uLab 8: 基本基本 SCI 通信通信 u从从 DSP发送一个字符串到发送一个字符串到 PC COM端口端口.u将将茨维考茨维考适配板上的含有标准适配板上的含有标准DB9 – 电缆的连接器通过电缆的连接器通过RS232与与PC上上的串口的串口(COM1or COM2)相连相连uDSP 周期性的将字符串发送到周期性的将字符串发送到PCu无无 SCI 中断服务程序中断服务程序u在第一个字符传送后,只需在装入下一个字符到发送缓冲器之前置位发在第一个字符传送后,只需在装入下一个字符到发送缓冲器之前置位发送器空标志送器空标志(TXEMPTY) -然后再次等待即可-然后再次等待即可uWindows终端程序被用作终端程序被用作PC一侧的配对物,而且必须对正确的函数作一侧的配对物,而且必须对正确的函数作适当的初始化适当的初始化 The Windows-Hyper Terminal program is used as the counterpart from the PC’s-side and must be initialized properly for correct function(波特率,奇偶性,波特率,奇偶性, 无协议无协议).。