S5PV210串口通信编程实战-2

发布者:科技思想家最新更新时间:2022-08-04 来源: csdn关键字:S5PV210  串口通信 手机看文章 扫描二维码
随时随地手机看文章

1、串口Tx、Rx对应的GPIO初始化

给GPA0CON的相应bit位赋值为相应值,用C语言位操作完成。

void uart_init( void )

{

//初始化Tx、Rx对应的GPIO引脚

rGPA0CON &= ~( 0xff << 0 ); //把寄存器的bit0 ~ bit 7全部清零

rGPA0CON |= 0x00000022; //0b0010, Rx、Tx

}


2、UCON、ULCON、UMCON、UFCON等主要控制寄存器

依据上节中分析的值进行依次设置即可

void uart_init( void )

{

//初始化Tx、Rx对应的GPIO引脚

rGPA0CON &= ~( 0xff << 0 ); //把寄存器的bit0 ~ bit 7全部清零

rGPA0CON |= 0x00000022; //0b0010, Rx、Tx


//几个关键寄存器的设置

rULCON0 = 0x3;

rUCON0 = 0x5;

rUMCON0 = 0x0;

rUFCON0 = 0x0;


}

//波特率设置 DIV_VAL = ( PCLK / (bps x 16) ) - 1 DVI_VAL = (66000000 / (115200 X 16 )) -1 = 34.8 余数0.8


//PCLK_PSYS用66MHz算

//rUBRDIV0 = 34

//rUDIVSLOT0 = 0xdfdd;


//PCLK_PSYS用66.7MHz算

//DVI_VAL = (66700000 / (115200 X 16 )) -1 = 35.18 余数0.18

rUBRDIV0 = 35

//(rUDIVSLOT中的1的个数)/ 16 = 上一步计算的余数 = 0.18

(rUDIVSLOT中的1的个数)= 16 x 0.18 = 2.88 = 3 (3个1找推荐表)

rUDIVSLOT0 = 0x0888; //3个1,查表得到这个数字


3、波特率的计算和设置

(1)、第一步,用PCLK_PSYS和目标波特率去计算DIV_VAL = ( PCLK / (bps x 16) ) - 1

(2)、第二步,UBRDIV0寄存器中写入DIV_VAL的整数部分

(3)、第三步,用小数部分乘16得到1的个数,查表得到uBDIVSLOT0寄存器的设置值


4、串口发送和接收函数的编写

//串口发送程序,发送1个字符

void uart_putc( char c )

{

//串口发送一个字符,其实就是把一个字节丢到发送缓冲区(就是UTXH0寄存器)中去

rUTXH0 = c;

rUTXH0 = a;

//如果像上面这样发送,CPU太快,(因为没用中断)串口处理不过来。这时要去读一个状态寄存器(UTRSTAT0寄存器)

//因为串口控制器发送1个字节的速度远远低于CPU的速度,所以CPU发送1个字节前必须确认串口控制器当前缓冲区是空的(意思就是串口已经发完了上一个字节)

//如果缓冲区非空(UTRSTAT0寄存器)bit1位为0,此时应该循环,直到(UTRSTAT0寄存器)bit 1位为1。

while( !(rUTRSTAT0 & (1 << 1 ) ) ); //判断缓冲区为空

rUTXH0 = c;

}


(1)、写发送函数,主要发送前要用while循环等待发送缓冲区为空才能发送。


(2)、串口接收程序,轮询方式,接收一个字节

char uart_getc( void )

{

while( !(rUTRSTAT0 & ( 1 << 0 )));

return ( rURXH0 & 0x0f );

}

5、综合调试

void main( void )

{

uart_init();

while( 1 ) //让不停的发字符a

{

uart_putc( ‘a’ );

delay(); //延时函数

{

}

6、扩展练习 - 更改波特率后再调试


查时钟框图找时钟来源:

在这里插入图片描述

波特率计算:

在这里插入图片描述
在这里插入图片描述

发送接收状态寄存器:

在这里插入图片描述

关键字:S5PV210  串口通信 引用地址:S5PV210串口通信编程实战-2

上一篇:S5PPV210的中断体系介绍
下一篇:S5PV210串行通信编程实战-1

推荐阅读最新更新时间:2024-11-07 07:36

运用LabView控制DS3900串口通信模块
本篇应用笔记讨论了DS3900串口通信模块和LabView的使用问题,LabView是适用于 嵌入式 应用的图形化界面开发平台。本文可作为面向DS3900的LabView界面用户指南。 介绍 LabView作为嵌入式应用的图形化界面开发平台得到了广泛应用。DS3900串口通信模块是一款通用 接口 板,借助该 接口 板,用户可使用PC串口与具有I²C接口的器件通信。DS3900的指令集允许应用软件与I²C器件直接通信。 本应用笔记是面向DS3900的LabView界面的用户指南。首先,用户需要安装LabView。为用户提供了标准VI,以加载并运行程序。可以下载与本应用笔记相关的LabView代码(ZIP,321K)。 使用
[模拟电子]
运用LabView控制DS3900<font color='red'>串口通信</font>模块
STM32和ROS的串口通信
1 前言 之前有不少小伙伴,因为不知道如何使用这里分享的代码、或者是对系统结构不太清楚等等,导致调用不成功的,这里我深表歉意。下面我会对整个通信方案的部署进行详细的说明,确保每一个看到这篇文章的小伙伴,都能解决自己的问题。 2 本方案解决的问题 解决以STM32做ROS机器人底层驱动的串口通信问题、其他需要stm32和ros通信的小伙伴也可以使用。 -1- 介绍 1 最终协议的样子 我这里实现的STM32和ROS的串口通信协议如下图: STM32端和ROS端都有一个数据发送函数和一个数据接收函数,发送和接收的内容就是如上图所示的数据包,该数据包含有数据头(55aa)、数据尾(0d0a)、校验(crc8),
[单片机]
STM32和ROS的<font color='red'>串口通信</font>
ARM芯片开发(S5PV210芯片)——SD卡启动
1、SD卡启动 顾名思义就是启动代码存放在SD卡中,设备从SD卡中启动。用SD卡启动有一些好处:譬如可以在不借用专用烧录工具(类似Jlink)的情况下对SD卡进行刷机,然后刷机后的SD卡插入卡槽,SoC既可启动;譬如可以用SD卡启动进行量产刷机(量产卡)。 2、支持SD卡启动的条件 SD卡启动不是每款芯片都支持的,因为SD卡有个难点,就是SD卡不能上电直接使用也不能通过总线与CPU相连,要通过Soc的SD卡控制器发命令才能与SD卡通信。这个有个矛盾点,SD卡需要初始化才能使用,但是能初始化SD卡的启动代码又在SD卡上,这就陷入了死锁。所以之前的设备都是用Norflash做启动介质,因为NorFlash上电即可使用,还可以片内执
[单片机]
ARM芯片开发(<font color='red'>S5PV210</font>芯片)——SD卡启动
8051单片机串口通信中的检错方法研究
0 引言 对于基于flash控制器的8051的芯片结构,一般在进行数据传输时,都是先通过串口将数据传送到flash控制器的buffer中。由于buffer的大小为512 bytes,所以每次传输的最大数据量为512bytes。本文中所讨论的三种检错方法的传输数据量均为512 bytes。 1 检错方式 基于8051的串口数据通信系统的硬件开发平台框图如图1所示。利用该平台进行数据传输时,通常有三种数据检错方式。 1.1 奇偶校验 奇偶校验是检错中比较常见的一种方法。它利用数据中的1的个数作为检错的标志位,若1的个数为奇数个,则错误检测的标志位为1,若1的个数为偶数,则错误检测的标志位为0。在发送端和接收端
[单片机]
Linux刷机总结(S5PV210)
刷机前要破环iNand,才能从SD卡启动 u-boot下破坏iNand movi write u-boot 0x30000000 SD卡下载.bin失败: 管理员身份运行 WIN10_Andriod驱动安装失败: https://blog.csdn.net/qq_24046029/article/details/95728564 LinuxQT刷Andriod总结: 开机,使用SecuteCRT链接开发板 进入linux系统控制台,执行如下指令: busybox dd if=/dev/zero of=/dev/mmcblk0 bs=512 seek=1 count=1 conv=sync 刷卡工具去制作启动SD卡,
[单片机]
Linux刷机总结(<font color='red'>S5PV210</font>)
单片机利用串口通信传送温度
/********该程序主要是利用DS18B20采集温度,然后通过数码管显示温度*************/ /*当程序收到上位机发送的命令之后,该程序会将当时的温度值通过串口发送给上位机*/ #include reg51.h #define uchar unsigned char #define uint unsigned int sbit DQ = P1^0; //定义DS18B20的信号线端口 uchar i,j; uchar dis_buffer ;//定义数据缓冲数组 uchar bit_ser ={0xfe,0xfd,0xfb,0xf7}; //定义数码管片选数组 uchar seven_seg = {
[单片机]
STM32之串口通信
实验目的: 实现利用串口1 不停的打印一个信息到电脑上,同时接收从串口发过来的数据,把发送过来的数据直接送回给电脑。 实验平台: 基于STM32F103C8T6的彩屏开发板 硬件接口: 注意:因为我的开发板上的串口和LED共用了PA9和PA10,所以在使用USART1时务必屏蔽LED,不然两者会互相影响而导致实现现象无法呈现。 相关寄存器: 1,串口时钟使能。串口作为STM32 的一个外设,其时钟由外设时钟使能寄存器控制,这 里我们使用的串口1 是在APB2ENR 寄存器的第14 位。 2,串口复位。串口1 的复位是通过配置APB2RSTR 寄存器的第14 位来实现的。。通
[单片机]
STM32F103标准库开发---Uart串口通信实验---函数发送和中断接收
一、Uart串口通信----函数发送 1. Uart串口发送(标准库)函数—单字节发送 Uart串口发送函数在STM32F103标准库的 stm32f103x_usart.c 文件中,具体如下图所示: 具体函数如下: /** *@功能:通过USARTx外设传输单个字节数据 *@参数1:指定USART外设(USART1,USART2,USART3,USART4,USART5) *@参数2:要传输的数据(最多9位数据,由初始化配置决定) *@返回值:无 */ void USART_SendData(USART_TypeDef* USARTx, uint16_t Data) { /* Check the parame
[单片机]
STM32F103标准库开发---Uart<font color='red'>串口通信</font>实验---函数发送和中断接收
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved