将基于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 部分。


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

相关文章

    、EPROM、FLASH、LCD控制器和PWM输出,支持16位端口DRAM; NEC公司的VR核心处理器,它是64位RISC芯片,拥有300MHz时钟和603MIPS的处理程度,集成统一的L2高速......
    保证安全性。此外,通过光学连接电子控制单元(ECU),可以将不同系统间的噪声限制在产生它的ECU中,避免其传播到整个车辆。而这些用基于铜的网络实现类似的隔离是非常困难和昂贵的。 3. 满足......
    ch32和stm32的区别;引言 STM32是STMicroelectronics基于ARM Cortex-M处理器架构生产的一系列微控制器,而CH32是中国制造商WCH生产的一组微控制器。 在本......
    PLC与运动控制器的区别 运动控制器的工作原理;运动控制器是一种电子设备,通常与运动控制软件配合使用,用于控制机器人、数控机床和其他自动化设备移动或执行各种任务。 运动控制器的工作原理是将预定的控制......
    调速电机控制器 调速电机控制器工作原理;  调速电机控制器是什么   调速电机控制器是一种电子设备,用于控制调速电机的转速和运行状态。它通过改变电机输入电压、电流、频率等参数,从而实现对电机的调速和控制......
    8051微控制器的基础知识;8051微控制器是嵌入式系统、消费电子、汽车等各个领域中最流行和最常用的微控制器之一,技术上称为Intel MCS-51架构。8051微控制器系列是由Intel公司......
    电机控制器的工作原理、主要类型和功能特点;电机控制器是一种用于控制电动机的电子设备。它们能够对单相或三相电动机进行控制,以控制其速度、方向、转矩等特性。电机控制器有多种类型和规格,可以......
    矢量控制器和正弦波控制器的区别;  矢量控制器是一种可以通过控制电机磁通和电流来控制电机转速和转矩的电机控制系统。矢量控制器可以通过对电机旋转速度变换为空间矢量来对电机磁通和电流进行控制,以实现对电机的高精度控制和全电区控制......
    电机控制器的原理介绍;电机控制器是用来控制电机的设备,通过电机控制器可以控制电机的启动、停止、转速、转向等参数。其控制器原理分为多种类型,具体介绍如下:1. 交流电机控制器原理交流电机控制器是一种常用的电机控制器......
    电机控制器维修入门指南;电机控制器的定义是:控制动力电源与驱动电机之间能量传输的装置,由控制信号接口电路、驱动电机控制电路和驱动电路组成。 也就是将动力电池的高压直流电转换为交流电,并且控制整车控制器......

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

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

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

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

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

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

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