S5PV210学习笔记——(4) 串口

UART:异步、串行、查分;USART:同步

电平信号:

       RS232:-3~-15v为1,+3~+15为0;抗干扰距离远

       TTL:+5v为1,0v为0,距离近不抗干扰,多用于电路内部或15m以内

串口中有个Transmit Buffer 寄存器,这个一会儿和FIFO一起说;还有个波特率发生器,它由时钟源为基础而产生。流控是有一根流控线,在发送机、接收机二者之间相连,每完成一个位的发送或者接收,就控制流控线改变,从而告知对方接受完成可以接受下一位数据了,一般在二者的速率不一样时使用。

S5PV210学习笔记——(4) 串口

串口的其他功能模式:

① FIFO(FIRST IN FIRST OUT)模式,在上图中,非FIFO模式下每次只能传一个字节的数据,传完之后需要重新想buffer里面写新的一个字节;而开启FIFO后,可以一次性向buffer发送多个字节,再传输,就不用多次只传一个字节时的跳转开销了

② DMA:direct memory access,直接内存访问,在交换数据时,由硬件自己完成,避免了占用CPU,对比FIFO,FIFO是轻量级的,而DMA可以自己指定一段内存,直接从内存向外发,只要内存大小允许,可以指定很大的缓存空间。在stm32的学习过程里面,做过相关的实验。

③ IrDA模式(Infra-Red红外线),以有无红外信号来判断0和1

各个串口通道对应的功能如下图,

S5PV210学习笔记——(4) 串口

5.4.1 常用寄存器

5.4.1.1 串口线控制寄存器

       选择串口模式(红外模式还是普通模式,一般是用普通模式);奇偶校验位;停止位的位数;发送的数据长度

S5PV210学习笔记——(4) 串口

5.4.1.2 串口控制寄存器

串口中控制时钟选择、收发中断方式、FIFO模式下的超时中断、异常状态的中断使能等

 

S5PV210学习笔记——(4) 串口

S5PV210学习笔记——(4) 串口

S5PV210学习笔记——(4) 串口

5.4.1.3 FIFO控制寄存器

       控制FIFO的缓存大小、使能等

S5PV210学习笔记——(4) 串口

S5PV210学习笔记——(4) 串口

S5PV210学习笔记——(4) 串口

5.4.1.4 UART modem control register

       看起来是控制流控相关的东西

S5PV210学习笔记——(4) 串口

 

5.4.1.5 收发缓存寄存器

里面用来放将要发送的数据,或者放收到的数据

S5PV210学习笔记——(4) 串口

5.4.1.6 其他寄存器

       除了上面的几个常用寄存器,还有下表中的一些状态寄存器,中断屏蔽寄存器,波特率设置寄存器等

S5PV210学习笔记——(4) 串口

5.4.2 stdio移植

       Stdio:standard input output标准输入输出,在PC中标准输入是键盘,标准输出是屏幕。其中printf和scanf可以和底层的输入输出函数绑定,然后和stdio绑定,就可以用printf输出到stdio指定的输出口

       在串口的使用时,我们的输入输出都是串口

       在stm32的printf移植时,我们只知道用putc里面的输出端改成串口,而不知道printf的整个实现过程

       Printf中,主要用的两个关键函数

① vsprintf():这个函数用来格式化打印信息,得到纯字符串格式的打印信息,用来一会儿的输出

② putc():这个就是真正的输出函数,控制标准输出硬件,将信息发送出去

       Stdio库函数的应用,库函数里有个makefile作为子makefile,他的用法可以参照子makefile

S5PV210学习笔记——(4) 串口S5PV210学习笔记——(4) 串口S5PV210学习笔记——(4) 串口

这个是printf函数,const char* fmt是字符串,任何是可变参数

 S5PV210学习笔记——(4) 串口

 

5.4.3 程序

 

S5PV210学习笔记——(4) 串口

S5PV210学习笔记——(4) 串口

 

上一篇:spring boot+ jpa使用specification 查询分页


下一篇:嵌入式Linux_ARM裸机_S5PV210(Cortex-A8)开机启动流程