历史上的今天
今天是:2024年09月27日(星期五)
2021年09月27日 | 串行接口的工作原理和实现
2021-09-27 来源:eefocus
串口的结构和工作原理
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。
uART使用标准的CMOS逻辑电平(0~5v、0~3.3 V、0~2.5V或0~1.8V四种)来表示数据,高电平为1,低电平为0。为了增强数据的抗干扰能力,提高传输长度,通常将CMOS逻辑电平转换为RS-232逻辑电平(3~15v以o表示,-3~-15V以1表示)。

上图为串行接口的原理图,可以分为三部分分别为发送缓冲寄存器,波特率发生器,接受缓冲寄存器,发送缓冲寄存器从总线接受资源,通过波特发生器发送到接收缓存器中
一句话总结串口:异步全双通串行数据总线
串口寄存器的配置
我们通过查手册找到串口,和我们分析的一样,三条线一个AST,DSR,DGND

注:我们通过看原理图知道,他的两根线一个是接受数据的,一个是发送数据的,其中接地线是用来调节电平的,他的通信方式是通过是板子的串口线和笔记本的串口线,他中间通过一个电平转换芯片来进入这个

继续翻阅可以看见它通过排叉到核心板,这样就可以看见他连接到GPA0的引脚

传输实现

查看手册,对GPA0进行配置
#define GPA0CON *((volatile u32 *)(0x11400000))
#define UART0BASE 0x13800000
//将GPA0-0 1引脚配置为串口0的发送和接收功能
GPA0CON &= ~(0XFF<<0);
GPA0CON |= 0x22;
对串口进行配置



//配置数据位8N1
ULCON0 = 0x3 <<0;
//配置串口数据收发方式为中断或者论寻
UCON0 |= (0x1 << 2) | ( 0x1 << 0);
//使用无FIFO模式
UFCON0 = 0x0;
//禁用modem流控
UMCON0 = 0x0;
//配置波特率为115200
UBRDIV0 = 53;
UFRACVAL0 = 4;
通过这个寄存器来进行数据的收发,0=缓冲区为空,1=缓冲器接收到数据,所以我们这样来实现

void uart0_putchar(char ch)
{
while (!(UTRSTAT0 & (0x1 << 1)))
{
;
}
UTXH0 = ch;
}
char uart0_getchar(void)
{
char c;
while (!(UTRSTAT0 & (0x1 << 0)))
{
;
}
c = URXH0;
return c;
}
int main(void)
{
uart0_init();
u8 c;
while ((c = uart0_getchar()) != '@' )
{
uart0_putchar(c);
uart0_putchar('r');
uart0_putchar('n');
}
return 0;
}
通过这样的配置,然后我们通过交叉编译,在arm板中运行这个,就可以实现最简单的串口通信.
串口通信原理的理解
由于程序是跑在板子上的,所以我们的板子请求笔记本发送数据(通过kermit平台),不断的去查询寄存器是是否变化,之后将写入的数据发送给板子的串口
上一篇:ARM时钟管理单元--CMU
下一篇:LED的使用纯汇编和C语言的点亮
史海拾趣
|
由于经济环境方面的原因,毫不夸张地说,中国工程师的生存状况在脑力劳动者群体中的表现和体力劳动者群体中的井下矿工极为相象,比如他们都背负着巨大的压力(当然一个是精神压力一个肉体的压力),都经常加班工作。而且也是经常在某个重大恶性事件 ...… 查看全部问答> |
|
CCS是开放的软件平台,它可以支持不同的硬件接口,因此不同的硬件接口必须通过标准的Driver同CCS连接。 Driver安装的常见问题? 请认真阅读“安装手册”和Driver盘中的Readme。 1)对于SEED-XDS,安装Readme中的步骤,将I/O口设为240/280/320/34 ...… 查看全部问答> |
|
传统的LED及其模块光、色、电参数检测方法有电脉冲驱动,CCD快速光谱测量法,也有在一定的条件下,热平衡后的测量法,但这些方法的测量条件和结果与LED进入照明器具内的实际工作情况都相差甚远。文章介绍了通过Vf-TJ曲线的标出并控制LED在控定的结 ...… 查看全部问答> |
|
就如我上个贴“春天到了,又将有大批Stellaris的板子运到EEWORLD https://bbs.eeworld.com.cn/thread-254845-1-1.html”所说,大批的Stellaris LM3S811就要来了! 大家之前都专心在LM3S8962,现在可以开始分分心来研究LM3S811了,把自己对LM3S811 ...… 查看全部问答> |
|
在ccs3.1环境下新建一个工程之后,编译完了之后老是提示一个警告: warning: creating .stack section with default size of 400 (hex) words. Use -stack opt ...… 查看全部问答> |
|
MSP430FG439上实现IO模拟UART以及移植要点解析 最近要做MSP430上的开发,一上手就要做IO模拟UART这种难度的玩意,幸好网上已经有很多现成的MSP430的软串口实现例子,本文代码大部分参考>http://www.microcontrol.cn/430base.htm上的《MSP430的Timer_A实现模拟串口功能例程》,并且成功移植到MSP4 ...… 查看全部问答> |




