全部博文(41)
2011年(41)
分类: 嵌入式
2011-04-04 21:32:08
串口通信还没弄完,等到全部弄完了在一起做一个总结,首先每天先记录一下现在的学习心得。
串口调试有几天了,发现串口调试还是比较难的,以后不管是调其他的什么器件都要遵循先容易的把最简单的框架弄好,再一步步的增加功能,一开始我试想 一步就把把串口通信弄完,直接写一个基于FIFO的中断串口通信,我承认我失败了,弄了好久没一点结果。弄串口通信还是先写一个不用FIFO的直接用查询 的程序,然后再加中断,最后写FIFO的中断程序。今天我写了是不用FIFO的中断程序,有几点要注意的地方。
1. 一定要先把手册看明白看清楚后在来写程序,其实中断的话如果简单的话只要设计几个寄存器,中断屏蔽寄存器INTMASK。开始我没看懂手册就开始写程序,把一堆的寄存器配置什么结果都没有。
2. 程序风格要好,注释要清晰,放在一个函数的前面,可以是这个函数的结构脉络,然后程序中间还可以插入一些必要的解释,这是我个人的理解,我觉得这样看起来会比较舒服。而且思路清晰。
3. 回到今天的程序,对于2440的中断一定要先清除中断挂起寄存器INTPND 和 SRCPND,如果遇到子中断的话还要先清除子中断,注意清除中断是给相应的中断位置1清除,二是先清除子中断然后清除父中断,这个是我给的叫法,理解就 好。三是即使是初始化中断寄存器也要先清除相应中断位,今天我就是因为这个地方而弄了好久。
今天要感谢赵春江老师的博客,写的非常好,今天是参考了赵老师的博客才发现是要初始化时清除中断。链接地址:
http://blog.csdn.net/zhaocj/archive/2010/03/10/5364412.aspx
今天就写到这里。20:27:31
S3C2440串口总结
ARM平台 mini2440友善之臂
是否需要操作系统 否,裸机编程
串口通信总结如下
1. 基本知识概括
S3C2440包含三个独立串口,UART0-3,支持系统时钟的115.2Kbps波特率,手册上说明用外部高频率时钟可以提高波特率,每个UART包含一个64Byte的FIFO。
2440有多种通信模式,直接通信,FIFO,DMA,红外模式,自动流。详细见数据手册。
2. 把下面这个图看懂。即串口通信原理方框图
3. 配置好寄存器
其实配置寄存器的时候一定要把手册多看几篇,因为很多寄存器可能是硬件置位的只要你清除的,比如中断的几个挂起寄存器INTPND SRCPND这些寄存器就只要置1清除就好了。UART通信主要是配置寄存器。
4. 其他相关知识
中断,这个是很串口通信相关的,首先要把中断弄明白,还是要先清除中断挂起寄存器,还要注意顺序。
时钟,这个很重要,应该串口通信很重要的一点就是波特率,而波特率是由时钟控制的,其中串口的时钟一般是用PCLK时钟驱动,具体的2440的时钟以及相关配置在另一篇文章中已经说明白。
MMU,其实这个是与中断相关的,因为我们是裸机编程,中断的时候程序需要跳转,需要地址映射。
代码,
使用FIFO的中断串口通信代码
使用中断但不使用FIFO的代码