将基于8051的微控制器连接到SCI端口

发布时间:2024-01-03  

本应用笔记介绍如何配置高速微控制器或超高速闪存微控制器的UART,以便与支持SCI的设备通信。它首先简要讨论了SCI和UART模块之间的差异,并以一个实际示例结束,说明如何配置基于8051的达拉斯半导体微控制器UART以与SCI模块通信。


介绍

串行通信接口 (SCI) 是一种高速串行 I/O 端口,允许设备之间的同步或异步通信。它允许微控制器连接到各种类似功能的外设,以及标准RS-232接口。SCI 的确切实现因设备制造商而异;许多器件都支持异步模式下的全双工通信、奇偶校验、错误检测以及 <> 到 <> 位的可编程字符长度等功能。


所有基于 8051 的达拉斯半导体微控制器都能够与支持 SCI 的设备进行通信,即使 SCI 功能未明确列在微控制器的功能列表中。我们所有的微控制器都包含一到三个8051型UART,可以配置为在大多数常见的SCI模式下运行。


本应用笔记介绍如何配置高速微控制器或超高速闪存微控制器的UART,以便与支持SCI的器件通信。它首先简要讨论了SCI和UART模块之间的差异,并以一个实际示例结束,说明如何配置基于8051的达拉斯半导体微控制器UART以与SCI模块通信。提供了一个代码示例,演示如何初始化微控制器并执行简单的测试以确保设备正确通信。


SCI的特点

如上所述,SCI是一种高速串行接口。它与基于达拉斯半导体8051的微控制器上的8051式UART有许多相似之处。以下是 UART 中的 SCI 功能及其对应项的列表。用户应注意,并非所有 SCI 模块都支持列出的所有功能,因此用户应仔细阅读支持 SCI 的器件的数据手册,以了解其使用方式。


特征 SCI 达拉斯半导体UART
异步模式 适用于大多数实现 串行模式 1、2、3
同步模式 在某些实现上可用 仅串行模式 0
字符长度 1 到 9(如果支持可选字符长度) 8 或 9
平价 在某些实现上可用 受 9 位模式下的软件支持
成帧错误 是的 是的
空闲字符 检测空闲字符以唤醒设备。 UART不能检测空闲字符,但UART微处理器通信模式可用于向UART发出信号,将下一个字节视为地址/标识符。
中断字符 SCI 可以发送和接收中断字符 (00h)。 可以通过将串口RX引脚转换为逻辑0来传输中断字符。收到中断字符可能会导致成帧错误,具体取决于所选字符长度。


大多数 SCI 模块都支持异步通信格式,其中许多是独占的。此处的示例演示如何将基于 Dallas Semiconductor 8051 的微控制器配置为与支持 SCI 的设备进行异步通信。在这种情况下,我们将微控制器配置为与配置了以下特征的目标 SCI 通信:

10位异步模式;1 个启动,8 个数据,1 个停止位

波特率:19200 bps

为了与此设备通信,我们将做出以下决定来设置达拉斯半导体微控制器:

使用串行端口 0 进行通信

外部时钟源为 22.1184MHz

串口将配置为10位异步模式;1 个启动,8 个数据,1 个停止位(这是串口模式 1。

波特率发生器时钟源将是自动重新加载模式下的定时器1(定时器模式2)。

由于所有基于 Dallas Semiconductor 8051 的微控制器定时器默认为原始的 12 分频工作模式,因此此示例的优点是适用于所有达拉斯半导体器件,无论内核的时钟除数如何。这是因为DS5000FP (被12分频)、DS80C320 (被四分频)和DS89C450 (被1分频)都使用相同的串行端口时序,如果未选择定时器的更高速度选项。 有关UART操作的详细信息,请参阅相应用户指南的串行I/O部分。

由于SCI决定了数据的格式,因此接下来必须将达拉斯半导体微控制器初始化为正确的波特率。8位自动重载模式(定时器模式2)通过由外部时钟源驱动的用户可选定时器溢出产生波特率。这为设计增加了相当大的灵活性并简化了开发,因为波特率可以在软件中轻松选择,允许来自同一时钟源的多个波特率。确定波特率的公式如下所示:

pYYBAGPy2H6AL0hRAAAHefSnmaY446.gif?imgver=1

其中osc_frequency是外部时钟源的频率,单位为MHz,TH1是放置在定时器8 MSB SFR中的1位重载值,SMOD_0(PCON.7)是串行端口0倍增器使能位。或者,如果波特率和振荡器频率已知,则可以使用以下公式求解8位重载数TH1的值:

poYBAGPy2H-AAcPCAAAHZmrR-Us741.gif?imgver=1

假设外部时钟源为22.1184MHz,TH1值为FDh将产生19200的目标波特率,并清除倍频位。有关波特率选择的更多信息,请参阅相应用户指南的串行 I/O 部分。

以下简短的汇编代码示例演示如何初始化串行端口 0 以与配置为 10 位异步模式的 SCI 模块通信,速率为 19200 bps。成功操作后,它将回显任何收到的字符。可以轻松删除此功能,使其成为任何用户所需的 SCI 通信应用程序的通用 shell。

;SCI emulation example

; Simple transmit test to demonstrate how to configure 8051 UART to

; emulate an SCI module. Test code embedded in this example echoes back

; received characters.


org 0h            ;Reset vector.

ljmp start


org 23h           ;Serial port 0 vector.

ljmp SP0_ISR



org 100h          ;Start of code.

start:            ;Initialize Serial Port 0 for mode 1, 19200 baud

MOV TMOD,  #020h  ;Set timer 1 for mode 2 (8-bit auto reload)

MOV SCON0, #050h  ;SP0  10-bit asynchronous mode with receive enabled


;Now select the reload value based on baud rate and xtal frequency.

MOV TH1,   #0FDh ;19200 baud at 22.11 MHz

;MOV TH1,   #0FDh ;9600 baud at 11.059 MHz

;MOV TH1,   #0FAh ;9600 baud at 22.11  MHz


SETB TR1          ;Serial port is initialized, now start timer


;Enable Interrupts

MOV IE, #90h      ;This example supports interrupt-driven communications, so

                  ; enable global and serial port 0 interrupts.



;Test code in receive interrupt routine echoes back any received characters

; when combined with the loop here.

loop: sjmp loop



SP0_ISR:          ;Serial port 0 Interrupt Service Routine

jb  RI0, RIO_INT  ;Determine if receiver/transmitter was cause of interrupt.


TIO_INT:          ;Interrupt was caused by transmission.

;

;                  Placeholder for transmitter routine

;

CLR TI0

RETI


RIO_INT:          ;Interrupt was caused by reception

;

;                  Placeholder for receiver routine

;


MOV A, SBUF0      ;Test code that echoes back received character

MOV SBUF0, A      ; Remove for real code.


CLR RI0

RETI

总结


达拉斯半导体基于8051的微控制器中的UART可以很容易地配置为与许多设备中的SCI模块接口。这种流行的串行接口可以在多种模式下工作,但最常见的是RS-10通信中使用的11/232位异步模式。允许达拉斯半导体微控制器连接到SCI模块可提高整体系统的灵活性,因为它们可以连接到更广泛的嵌入式系统。


虽然此示例侧重于异步工作模式,但达拉斯半导体微控制器也可以配置为与在同步模式下运行的 SCI 接口。SCI 模块与 8051 UART 的相似性使得该接口能够以最小的努力完成。有关同步模式(串行端口模式 0)的详细信息,请参阅相应用户指南的串行 I/O 部分。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>