1 / 34

基于 HCS12 的嵌入式系统设计

基于 HCS12 的嵌入式系统设计. 合肥工业大学 吴 晔,张 阳,滕 勤 Email : wuye@ialab.hfut.edu.cn , yzhang0615@163.com , tengqin7348@126.com TEL : 13505612773 , 13966717615. 第 10 章 S12 串行通信接口模块及其应用实例. SCI 模块概述 SCI 模块结构组成和特点 SCI模块寄存器及设置 SCI模块基础应用实例 智能车系统中 SCI 模块的应用 . 10.1 SCI 模块概述.

vance
Download Presentation

基于 HCS12 的嵌入式系统设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 基于HCS12的嵌入式系统设计 合肥工业大学 吴 晔,张 阳,滕 勤 Email:wuye@ialab.hfut.edu.cn,yzhang0615@163.com,tengqin7348@126.com TEL:13505612773,13966717615 《基于HCS12的嵌入式系统设计》

  2. 第10章 S12串行通信接口模块及其应用实例 SCI模块概述 SCI 模块结构组成和特点 SCI模块寄存器及设置 SCI模块基础应用实例 智能车系统中SCI模块的应用 《基于HCS12的嵌入式系统设计》

  3. 10.1 SCI模块概述 串行通信是微控制器与外界进行信息交换的一种方式。MC9S12DG128微控制器内部有一个全双工串行通信接口,称为SCI。 串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,特别适合远距离通信。其缺点是传输速度较低,每秒内能发送或接收的二进制位数称为波特率。若发送一位时间为t,则波特率为1/t。 MC9S12DG128单片机内置的SCI模块是全双工、波特率可编程设置、可编程选择8位数据或9位数据格式的串行通信接口(也叫做串口)。本章着重介绍SCI模块的特性、寄存器功能及设置,并通过一些基础应用实例和SCI模块在自主寻迹智能车上的应用,让读者掌握SCI模块的应用及编程方法。 《基于HCS12的嵌入式系统设计》

  4. 10.2 SCI模块结构组成和特点 MC9S12DG128单片机内置的SCI模块如图10.1所示。 《基于HCS12的嵌入式系统设计》

  5. 10.2 SCI模块结构组成和特点 SCI模块具有以下基本特征: • 全双工运行; • 标准不归零传号/空号(NRZ)数据格式; • 13位波特率选择; • 可编程的8位或9位数据格式; • 独立使能发送器和接收器; • 可编程的发送器奇偶校验; • 两种接收器唤醒模式: • 空闲线唤醒; • 地址标志唤醒; • 8个驱动中断的标志位: • 发送器空; • 传输完成; • 接收器满; • 空闲接收器输入; • 接收器复写错误; • 噪声错误; • 帧错误; • 奇偶校验错误; • 接收器帧错误检测; • 硬件奇偶校验; • 1/16位时间噪声检测。 《基于HCS12的嵌入式系统设计》

  6. 10.3 SCI模块寄存器 MC9S12DG128的SCI模块共有8个寄存器,详见表10.1。对于112引脚的MC9S12DG128,内部有两个SCI模块,分别是SCI0和SCI1,表10.1中分别列出了SCI0和SCI1两个模块中各寄存器地址。 《基于HCS12的嵌入式系统设计》

  7. 10.3 SCI模块寄存器 10.3.1 SCI波特率寄存器 SCI波特率寄存器(SCI Baud Rate Registers)用来设置SCI的波特率,如图10.2所示,计算波特率公示为 SCI波特率=SCI模块时钟/ (16×BR) 其中,BR是SCI波特率寄存器SBR12到SBR0的内容。波特率寄存器的数值从1~8191。 《基于HCS12的嵌入式系统设计》

  8. 10.3 SCI模块寄存器 10.3.1 SCI波特率寄存器 读:任何时刻,如果只对SCIBDH寄存器作写入操作,紧接着读取该寄存器无法返回正确数据,直到对SCIBDL也赋值;写:任何时刻。 SBR12~SBR0:SCI波特率位。SCI的波特率由这13位确定。 注意1:复位后,第一次只有TE或RE位置位,波特率发生器才正常工作。当BR=0时,波特率发生器禁止。 注意2:如果只对SCIBDH寄存器赋值而不赋值SCIBDL寄存器,写操作是无效的,因为写入SCIBDH的数值只是放在一个临时寄存器中,直到写入SCIBDL寄存器时才将数值放入SCIBDH寄存器。 《基于HCS12的嵌入式系统设计》

  9. 10.3 SCI模块寄存器 10.3.2 SCI控制寄存器1 SCI控制寄存器1(SCI Control Register 1,SCICR1)如图10.3所示。 读:任何时刻;写:任何时刻。 LOOPS:环路选择位。在环路操作模式下,RXD引脚和SCI断开,发送器输出在内部和接收器输入相连。必须发送器和接收器均被使能的情况下才能够使用环路功能。环路操作如图10.4所示。  1表示环路操作模式使能;  0表示普通操作模式使能。 《基于HCS12的嵌入式系统设计》

  10. 10.3 SCI模块寄存器 10.3.2 SCI控制寄存器1 接收器输入由RSRC位决定。 SCISWAI:等待模式下SCI停止位。  1表示SCI在等待模式下禁止;  0表示SCI在等待模式下使能。 RSRC:接收器来源位。当LOOPS=1时,RSRC位决定接收器移位寄存器输入的来源。  1表示接收器输入连接到外部发送器,单线模式如图10.5所示;  0表示接收器输入连接到内部发送器输出。 《基于HCS12的嵌入式系统设计》

  11. 10.3 SCI模块寄存器 10.3.2 SCI控制寄存器1 LOOPS位和RSRC组合选择环路模式或单线模式参见表10.2。 M:数据格式选择位,该位决定数据字符长度是8位还是9位。  1表示1位起始位,9位数据位,1位停止位;  0表示1位起始位,8位数据位,1位停止位。 WAKE:唤醒条件位,该位决定了何种条件唤醒SCI,接收数据字符的最高位为1(地址屏蔽)或者RXD上的空闲条件。  1表示地址屏蔽唤醒;  0表示空闲线唤醒。 ILT:空闲线类型位,该位决定了何时接收器开始计数逻辑1作为空闲字符位。计数开始于起始位之后或者停止位之后。如果计数开始于起始位之后,停止位之前的一串逻辑1会导致一个空闲字符的错误识别。开始于停止位之后的计数避免了错误空闲字符的识别,但是需要适当的同步传输。 《基于HCS12的嵌入式系统设计》

  12. 10.3 SCI模块寄存器 10.3.2 SCI控制寄存器1 ILT:空闲线类型位,该位决定了何时接收器开始计数逻辑1作为空闲字符位。计数开始于起始位之后或者停止位之后。如果计数开始于起始位之后,停止位之前的一串逻辑1会导致一个空闲字符的错误识别。开始于停止位之后的计数避免了错误空闲字符的识别,但是需要适当的同步传输。  1表示空闲字符开始于停止位之后;  0表示空闲字符开始于起始位之后。 PE:奇偶校验使能位,该位使能奇偶校验功能。当奇偶校验功能使能时,会在传输字符的最高位插入一个奇偶校验位。  1表示使能奇偶校验功能;  0表示禁止奇偶校验功能。 PT:奇偶校验类型选择位,该位决定了使用奇校验还是偶校验。如果采用偶校验,当传输数据中1的个数为奇数时,奇偶校验位为1;当传输数据中1的个数为偶数时,奇偶校验位为0。如果采用奇校验,当传输数据中1的个数为奇数时,奇偶校验位为0;当传输数据中1的个数为偶数时,奇偶校验位为1。  1表示奇校验;  0表示偶校验。 《基于HCS12的嵌入式系统设计》

  13. 10.3 SCI模块寄存器 10.3.3 SCI控制寄存器2 SCI控制寄存器2(SCI Control Register 2,SCICR2)如图10.6所示。 读:任何时刻;写:任何时刻。 TIE:发送器中断使能标志,该位允许发送数据寄存器空标志TDRE产生中断请求。  1表示TDRE中断请求使能;  0表示TDRE中断请求禁止。 TCIE:发送完成中断使能位,该位允许发送完成标志TC产生中断请求。  1表示TC中断请求使能;  0 表示TC中断请求禁止。 《基于HCS12的嵌入式系统设计》

  14. 10.3 SCI模块寄存器 10.3.3 SCI控制寄存器2 RIE:接收器满中断使能位,该位允许接收数据寄存器满标志RDRF或者溢出标志OR产生中断请求。  1表示RDRF或OR中断请求使能;  0表示RDRF或OR中断请求禁止。 ILIE:空闲线中断使能位,该位允许空闲线标志IDLE产生中断请求。  1表示IDLE中断请求使能;  0表示IDLE中断请求禁止。 TE:发送器使能位,该位使能SCI发送器并配置TXD引脚由SCI控制,TE位能够用于发送空闲报头。  1表示发送器使能;  0表示发送器禁止。 《基于HCS12的嵌入式系统设计》

  15. 10.3 SCI模块寄存器 10.3.3 SCI控制寄存器2 RE:接收器使能位,该位使能SCI接收器。  1表示接收器使能;  0表示接收器禁止。 RWU:接收器唤醒位,该位使能SCI接收器。  1表示RWU使能唤醒功能并禁止接收器中断请求,硬件通过自动清除RWU位来唤醒接收器;  0表示普通操作。 SBK:发送中止符位,该位使能SCI发送器。SBK置位发送中止字符(当BK13置0,则发送10个或11个逻辑0;当BK13置位,则为13或14个逻辑0)。在完成发送中止符前自动清除SBK位。只要SBK置位,发送器连续发送完整中止符(10或11位;13或14位逻辑0)。  1表示发送中止符;  0表示没有中止符。 《基于HCS12的嵌入式系统设计》

  16. 10.3 SCI模块寄存器 10.3.4 SCI状态寄存器1 SCISR1和SCISR2寄存器为MCU提供产生SCI中断输入源的状态查询,如图10.7所示。清除这些标志位的过程需要读取状态寄存器,然后通过读或者写SCI数据寄存器才能实现。在这两步之间允许执行其他指令,只要不影响I/O操作,但是两步的操作顺序对于标志位清除是必需的。 《基于HCS12的嵌入式系统设计》

  17. 10.3 SCI模块寄存器 10.3.4 SCI状态寄存器1 读:任何时刻;写:无效。 TDRE:发送数据寄存器空标志。当发送移位寄存器从SCI数据寄存器获得1字节数据时该标志置位。当TDRE=1时,发送数据寄存器(SCIDRH/L)为空,此时能够接收一个字节的新数据。通过读取SCISR1寄存器然后写数据至SCIDRL寄存器可以清除TDRE位。  1表示1字节数据传输到发送移位寄存器,发送数据寄存器空;  0表示没有数据传输到发送移位寄存器。 TC:发送完成标志。当有发送正在进行时,当报头或者中止符加载时,TC清零;当TDRE标志被置位且没有数据、报头、中止字符正在发送时,TC置位。此时TXD输出信号变成空闲(逻辑1)。TC置位后,通过读取SCISR1寄存器,再写数据至SCIDRL寄存器清除TC位。当数据、报头、中止字符进入队列并准备发送时,TC被自动清除。  1表示没有发送正在进行;  0表示发送正在进行。 RDRF:接收数据寄存器满标志。当接收移位寄存器中的数据传送到SCI数据寄存器时,RDRF置位。RDRF置位后,通过读取SCISR1寄存器,再读取SCIDRL寄存器数据清除RDRF位。  1表示SCI数据寄存器中接收的数据可用;  0表示SCI数据寄存器中的数据不可用。 《基于HCS12的嵌入式系统设计》

  18. 10.3 SCI模块寄存器 10.3.4 SCI状态寄存器1 IDLE:空闲线标志。当10个连续的逻辑1(M=0)或者11个连续的逻辑1(M=1)出现在接收器输入端时,IDLE置位。一旦IDLE标志被清除,在空闲条件下能够置位IDLE标志之前,必须接收一个有效帧再次置位RDRF标志。IDLE置位后,通过读取SCISR1寄存器之后读取SCIDRL寄存器数据清除IDLE位。  1表示接收器输入空闲;  0表示IDLE标志上一次被清除后,接收器未接收到有效数据。 注意:当接收器唤醒位(RWU)置位时,线路空闲条件下不会置位IDLE标志。 OR:溢出标志。当接收移位寄存器接收下一帧数据之前,如果软件读取SCI寄存器失败,OR置位。对于第二帧而言,接收到停止位后立即置位OR。移位寄存器中的数据丢失,但是SCI数据寄存器中的已有数据不受影响。OR置位后,通过读取SCISR1寄存器之后读取SCIDRL寄存器数据清除OR位。  1表示溢出发生;  0表示没有溢出发生。 注意:当RDRF标志清除时,读取OR可能返回1。这可能会发生在以下事件中: ① 接收第一帧数据后,读取状态寄存器SCISR1(返回RDRF=1和OR=0); ② 没有读取数据寄存器中的第一帧就接收第二帧(第二帧数据没有收到,OR=1); ③ 读取数据寄存器SCIDRL(返回第一帧并清除RDRF标志); ④ 读取状态寄存器SCISR1(返回RDRF=0和OR=1)。 事件③和事件②同时发生或者在事件②之后发生。当这种情况发生时,如果后来的帧要被接收,事件④后的一个虚拟SCIDRL读操作可以清除OR标志。 《基于HCS12的嵌入式系统设计》

  19. 10.3 SCI模块寄存器 10.3.4 SCI状态寄存器1 NF:噪声标志。当SCI检测到接收器输入有噪声时,NF置位。NF置位和RDFR标志同时,但在溢出时NF不置位。NF置位后,通过读取SCISR1寄存器之后读取SCIDRL寄存器数据清除NF位。  1表示检测到噪声;  0表示没有检测到噪声。 FE:帧错误标志。当接收到的停止位是0时,FE置位。FE置位和RDFR标志同时,但在溢出时FE不置位。FE置位后,通过读取SCISR1寄存器之后读取SCIDRL寄存器数据清除FE位。  1表示帧错误发生;  0表示没有帧错误发生。 PF:奇偶校验错误标志。当奇偶校验使能位(PE)置位且接收到数据的奇偶校验位和定义的奇偶校验类型不符时,PF置位。PF置位和RDFR标志同时,但在溢出时PF不置位。PF置位后,通过读取SCISR1寄存器之后读取SCIDRL寄存器数据清除PF位。  1表示奇偶校验错误发生;  0表示没有奇偶校验错误发生。 《基于HCS12的嵌入式系统设计》

  20. 10.3 SCI模块寄存器 10.3.5 SCI状态寄存器2 SCI状态寄存器2(SCI Status Register 2,SCISR2)如图10.8所示。 读:任何时刻;写:任何时刻,写入SCI状态寄存器2数据,除BK13和TXDIR位之外的其他位数据无效。 BK13:中止符长度,该位决定中止符的长度是10位或11位,还是13位或14位。 帧错误的检测不影响该位。  1表示中止符的长度是10位或11位;  0表示中止符的长度是13位或14位。 《基于HCS12的嵌入式系统设计》

  21. 10.3 SCI模块寄存器 10.3.5 SCI状态寄存器2 TXDIR:单线模式下的发送器引脚数据方向,该位决定了在单线模式下,TXD引脚被用做输入还是输出,仅在单线模式下有效。  1表示单线模式下TXD引脚被用做输出;  0表示单线模式下TXD引脚被用做输入。 RAF:接收器有效标志位。当接收器在起始位的RT1时刻检测到逻辑0时,RAF置位。当接收器检测到空闲字符时,RAF被清除。  1表示没有接收正在进行;  0表示正在进行接收。 《基于HCS12的嵌入式系统设计》

  22. 10.3 SCI模块寄存器 10.3.6 SCI数据寄存器 SCI数据寄存器(SCI Data Registers,SCIDRH/L)如图10.9所示。 《基于HCS12的嵌入式系统设计》

  23. 10.3 SCI模块寄存器 10.3.6 SCI数据寄存器 读:任何时刻,读取SCI接收数据寄存器数据;写:任何时刻,写入SCI发送数据寄存器数据,写入操作对R8位无效。 R8:接收第9位。当SCI配置为9位数据格式时(M=1),R8是接收到数据的第9位。 T8:发送第9位。当SCI配置为9位数据格式时(M=1),T8是发送数据的第9位。 R7~R0:接收数据的低8位。 T7~T0:发送数据的低8位。 注意:如果T8的数值和之前发送的一样,T8就不必重新写入。同样的值被发送直到T8被重新写入不同的值。在8位数据格式中,只有SCI数据寄存器低字节(SCIDRL)需要被访问。在9位数据格式中,用8位写指令时,要先写SCIDRH,再写SCIDRL。 《基于HCS12的嵌入式系统设计》

  24. 10.4 SCI模块基础应用实例 实例一:本实例实现SCI模块的数据发送,利用SCI0模块连续发送0~99,共100个数据。 程序清单: 《基于HCS12的嵌入式系统设计》

  25. 10.4 SCI模块基础应用实例 《基于HCS12的嵌入式系统设计》

  26. 10.4 SCI模块基础应用实例 《基于HCS12的嵌入式系统设计》

  27. 10.4 SCI模块基础应用实例 实例二:本实例实现SCI模块的数据收/发,编程实现当DG128接收到数据0xAA时,发送0xBB;如果接收到的数据不是0xAA,则发送0xCC。 程序清单: 《基于HCS12的嵌入式系统设计》

  28. 10.4 SCI模块基础应用实例 《基于HCS12的嵌入式系统设计》

  29. 10.5 智能车系统中SCI模块的应用  在智能车系统设计调试过程中,需要一些辅助调试手段,以便了解当前智能车的运行车速、舵机转角、赛道信息等参数。常用的调试手段大多采用RS-232串口方式调试,在第三届全国大学生“飞思卡尔”杯智能汽车竞赛活动中,也有部分参赛队伍采用SD卡辅助调试方法。RS-232串口调试方法是最简便也是最常见的,利用MC9S12DG128的SCI模块实现的RS-232串口通信原理如图10.10所示。 《基于HCS12的嵌入式系统设计》

  30. 10.5 智能车系统中SCI模块的应用  利用图10.10所示的原理,容易实现MC9S12DG128与PC的串口通信。只需要合理配置MC9S12DG128中的SCI相关寄存器就可以实现RS-232串口通信。以下给出SCI初始化以及一些功能函数代码,更复杂的功能请读者结合具体应用要求、参照样例自行完成。 《基于HCS12的嵌入式系统设计》

  31. 10.5 智能车系统中SCI模块的应用 《基于HCS12的嵌入式系统设计》

  32. 10.5 智能车系统中SCI模块的应用 《基于HCS12的嵌入式系统设计》

  33. 10.5 智能车系统中SCI模块的应用 《基于HCS12的嵌入式系统设计》

  34. The End 《基于HCS12的嵌入式系统设计》

More Related