当前位置: 首页 > news >正文

系统移植篇之uboot-4:UART

image-20251016112747794

image-20251016112845714

7,8是数据流控制

image-20251016134520726

代码如下:

# u-boot-2012.10.tar\u-boot-2012.10\board\samsung\goni\lowlevel_init.S
...
...
.../* for UART */如何初始化UART串口,调试之类的都依赖这个bl	uart_asm_init
...
...
...
/** uart_asm_init: Initialize UART's pins*/
uart_asm_init:/* set GPIO to enable UART0-UART4 */mov	r0, r8           # 将r8移到r0 = 0xE020,0000ldr	r1, =0x22222222  # 将0x22222222移到r1str	r1, [r0, #0x0]			@ S5PC100_GPIO_A0_OFFSET   #看锚点1,把r1回写到r0,把这些GPIO引脚配置为UART端口ldr	r1, =0x00002222          str	r1, [r0, #0x20]			@ S5PC100_GPIO_A1_OFFSET   把r1回写到r0+0x20地址处,看锚点2/* Check S5PC100 */cmp	r7, r8  #再次判断是110还是100型号的bne	110f #not equal向前跳转到110
...
...
...
110:/** Note that the following address* 0xE020'0360 is reserved address at S5PC100*//* UART_SEL MP0_5[7] at S5PC110 */ 下面这一段是配置MP0_5的代码,对我们210开发板没有什么意义,就不看了,这里面并没有对UART的寄存器进行配置,那么等会儿这里需要手动配置add	r0, r8, #0x360			@ S5PC110_GPIO_MP0_5_OFFSETldr	r1, [r0, #0x0]			@ S5PC1XX_GPIO_CON_OFFSETbic	r1, r1, #(0xf << 28)		@ 28 = 7 * 4-bitorr	r1, r1, #(0x1 << 28)		@ Outputstr	r1, [r0, #0x0]			@ S5PC1XX_GPIO_CON_OFFSETldr	r1, [r0, #0x8]			@ S5PC1XX_GPIO_PULL_OFFSETbic	r1, r1, #(0x3 << 14)		@ 14 = 7 * 2-bitorr	r1, r1, #(0x2 << 14)		@ Pull-up enabledstr	r1, [r0, #0x8]			@ S5PC1XX_GPIO_PULL_OFFSETldr	r1, [r0, #0x4]			@ S5PC1XX_GPIO_DAT_OFFSETorr	r1, r1, #(1 << 7)		@ 7 = 7 * 1-bitstr	r1, [r0, #0x4]			@ S5PC1XX_GPIO_DAT_OFFSET# 写自己的代码了,给自己后面的调试打下基础,看锚点3ldr r0, =0xE2900000ldr r1, =3  #8位数据位  ULCON0 = 3str r1,[r0]ldr r1,=0x305str r1,[r0,#0x4]       UCON0=0x305ldr r1,=1str r1,[r0,#0x8]       UFCON0=0ldr r1,=0str r1,[r0,#0xC]       UFCON0=0ldr r1,=34str r1,[r0,#0x28]      UBRDIV0=34ldr r1,=0xDFDD         str r1,[r0,#0x2C]      udivslot0=13'1接下来往串口里面写数据了,因为是FIFO缓冲区,所以只用往同一个地址写就行了看锚点6,写数据写到0xE290,0020ldr r0,=0xE2900020ldr r1,=0x55     UTH0='U'str r1,[r0]ldr r1,=0x61     UTH0='a'str r1,[r0]ldr r1,=0x72     UTH0='r'str r1,[r0]ldr r1,=0x74     UTH0='t'str r1,[r0]下面是win里面的换行方式\r\nldr r1,=0xA     UTH0='\r'str r1,[r0]ldr r1,=0xD     UTH0='\n'str r1,[r0]

锚点1

128面

image-20251016160245348

这里面配的全都是关于串口的GPIO应用

image-20251016160523588

锚点2

image-20251016160936935

配置UART2和UART3

和前面0和1的区别主要是其省略了一些流控制的引脚

锚点3

867面

image-20251016162220186

8-bit,一位停止位,不用奇偶校验,不用红外模式 就是0x0000,0011

锚点4

image-20251016162758890

image-20251016162826545

前两位(Receive Mode):一般最常用01这种模式, 中断或者polling查询模式(因为我们一开始禁止中断了,所以最好是查询模式,写了一个程序不断的检查,sdatas后面有一个接收位,位是1的话就代表已经收到数据了,是0代表没有收到数据),10就是DMA模式

锚点5

配置分频系数

image-20251016171254029

image-20251016171323915

image-20251016171342100

计算公式如下:

image-20251016171515815

UBRDIVn:

num of 1's in UDIVSLOTn : UDIVSLOTn中1的个数,看手册第880面,下面是官方推荐的值,并不强制

image-20251016172009728

PCLK是66MHz是已知量,手册第351页

image-20251016171819059

bps我们一般是选择115200这个值

假设UDIVSLOTn0x0080,那么1的个数就是1

接下来算UBRDIVn66M/(115200*16) - 1 - 1/16 = 34.8072917-0.0625 = 34.74479 ≈35如果报文过长的话,误差就会过大,会有一些畸变的,产生累计错误, 如果使x/16接近于0.8072917,那么这里就是34整数了产生的畸变会小很多, 使用13/16,也就是UDIVSLOTn采用

0xDFDD

锚点6

image-20251016174220488

http://www.dtcms.com/a/491216.html

相关文章:

  • net和cn哪个做网站好wordpress企业主题 视频
  • 石家庄网站排名优化360网站建设服务
  • 苍穹外卖-购物车 前端修改(小程序主页与购物车模块显示不一致)
  • 聊聊 Unity(小白专享、C# 小程序 之 小算盘、计算器)
  • 江苏金安建设公司网站在线设计平台官网
  • 专业网站建设公司哪里济南兴田德润什么活动电子商务网站的整个建设流程
  • 【2025年湖南省赛misc复盘】
  • 北京建设教育协会官方网站做产品推广得网站
  • 牙刮匙与牙周治疗疗效的相关性分析
  • 三星XR头显发布会正式敲定,苹果/Meta/微美全息竞逐AR底层核心卡位“军备竞赛”
  • 【C++进阶系列】:类型转换和IO流
  • 卡板技术支持 东莞网站建设动态设计是什么意思
  • 宠物服务平台(程序+文档)
  • Maven再次认识
  • 【STM32项目开源】基于STM32的智能厨房环境监控系统
  • 策略模式详情
  • 省级网站 开发建设 资质企业员工培训课程
  • VS Code settings.json配置(终端篇)
  • 好看的静态网站网页制作设计教程
  • Spring Boot API文档与自动化测试详解
  • 哈尔滨龙彩做网站多少钱做网站怎么样引流
  • Redis实战篇---添加缓存(店铺类型添加缓存需求)
  • 泸州百拓网站建设英文网站数据库如何建设
  • 河北电子商务网站建设互联网营销策略有哪些
  • 苏州专业网站设计制作公司湛江企业网站怎么建设
  • Linux Docker部署Dify使用shell脚本关闭和开启服务
  • 四川省建设信息网站从点点博客搬家到wordpress
  • 国家变电站声纹监测设备需求总结
  • Python读取Nacos配置时如何设置命名空间
  • 深入网站开发和运维 pdf网站开发文本编辑器