小兵和他的大兵们的笔记 https://bbs.21ic.com/?35570 [收藏] [复制] [RSS]

日志

UART Driver Rev1.0 for LPC2214 Over UCOSII2.52

已有 3937 次阅读2006-7-16 21:33 |个人分类:小兵的嵌入平台|系统分类:嵌入式系统

经过强化测试发布1.0版本。UARTRev1.0.rar


这个版本测试的时间较长,相信大部分的异常通信方式均被测试到。现在已经用在我的一个作品上。


期间很多朋友/网友给我了很多很好的建议,这里一并谢谢他们,同样也感谢我的家人,因为很多时候是在晚上做测试的,因此家务活动就没有参加了,多谢他们对我的工作的支持,虽然这些工作还是十分渺小,但我从这项工作中获得了快乐。


有关这个版本的说明请直接参阅文件的说明部分。


路过

鸡蛋

鲜花

握手

雷人

发表评论 评论 (14 个评论)

回复 johnzhu 2006-7-17 09:21
谢谢小兵

以下为blog主人的回复:

 

不客气

回复 mahuaqiang 2006-7-26 08:26

谢谢你!!!

以下为blog主人的回复:

 

不客气。多交流
回复 mahuaqiang 2006-7-26 09:09

你好!!我是一个ARM新手,我把你才UART驱动下载后加载到UCOS2.52后调试出错!!能否提点一下!!我用的是ADS1.2!!或发个完整的直接可以仿真或下载的程序我自己分析!!!我的邮箱:mahuaqiang_1996@163.com!!!!!

谢谢!!

以下为blog主人的回复:

 

5月22日发布的是一个工程文件,你可以试一试,http://blog.21ic.com/more.asp?name=greatbin&id=17019
回复 mahuaqiang 2006-7-26 09:23

为了联系方便我补充一下:

QQ:104492127

email:mahuaqaing_1996@163.com

你好!!我是一个ARM新手,我把你才UART驱动下载后加载到UCOS2.52后调试出错!!能否提点一下!!我用的是ADS1.2!!或发个完整的直接可以仿真或下载的程序我自己分析!!!我的邮箱:mahuaqiang_1996@163.com!!!!!

谢谢!!)

以下为blog主人的回复:

 

http://blog.21ic.com/more.asp?name=greatbin&id=17019
回复 xkleee 2006-8-15 16:05

您好,我将您的驱动移植到LPC2210上,发觉读不到串口发送的数据,串口设置无误,麻烦您帮我解决一下,或发一个工程文件到我的邮箱里好吗,谢谢!

bradley401@163.com

以下为blog主人的回复:

 

http://blog.21ic.com/more.asp?name=greatbin&id=17019里有一个工程文件。你可以试一试看
回复 r207 2006-9-14 16:29

你好!我把你的UART Driver Rev1.0 用到了lpc2148上了,可是编译出错,读不到数据 我用的是keil v3,ucosII 2.52,用到2148上有什么需要改动的么?怎样才能屏蔽这些警告?谢谢

出错信息如下:

UART0\UART.c(66): warning:  #1296-D: extended constant initialiser used
UART0\UART.c(66): warning:  #1296-D: extended constant initialiser used
UART0\UART.c(67): warning:  #1296-D: extended constant initialiser used
UART0\UART.c(67): warning:  #1296-D: extended constant initialiser used
UART0\UART.c(68): warning:  #1296-D: extended constant initialiser used
UART0\UART.c(68): warning:  #1296-D: extended constant initialiser used
UART0\UART.c(69): warning:  #1296-D: extended constant initialiser used
UART0\UART.c(69): warning:  #1296-D: extended constant initialiser used

以下为blog主人的回复:

 

我没有keil v3。这个错误我没有遇到过,你可以在21ic论坛上搜索以下,别人遇到没有。

以下为blog主人的回复:

 

你可以到zlgarm论坛上尝试得到别人的帮助。
回复 r207 2006-9-16 19:58

您好

你的串口驱动我用了一下,发现打开串口以后收发都没有问题,可是在正确收发了一次 关闭串口后,pc再发送一次数据,然后再打开串口,pc再发送一次数据,pc指针就飞了,程序重起!

您分析是什么毛病!

以下为blog主人的回复:

 

你是在断点停下时用PC向目标板发送了一包的情况下发现一上问题的,是吗?如果是请全速运行,再测试确认一下。

因为我发现如果调试时程序在运行停下来时如果收到字符,会有异常。这是调试器的问题,我无法解决。

谢谢

回复 cemi 2006-11-12 20:00
你好, 非常感谢你这么好的串口中间件, 我用了一下, 的确很稳定, 在这里我想给你提个建议, 你能不能增加一个读一行字符串的函数, 因为我觉得串口很大的应用是用来发字符串, 如果能增加一个如UART_ReadLine的函数, 在检测到"\0"字符的时候就发返回读到的数据, 这样就方便字符串方面的程序设计了.

QUOTE:
以下为blog主人的回复: 非常感谢你的建议。 很久没有上自己的博客了,因为今年的一些其他事情
回复 jerry 2006-11-14 16:25
我使用了你发布的串口驱动,在接收大数据包时(182字节)发现,uart_read函数收不到任何数据,但是在加大超时时间后又正常了,从这些现象来看,这个函数的超时时间=从开始接收到接收到第一个字符的等待时间 + 接收完所有数据的时间。 2次超时时间分别为500ms, 2000ms,通讯参数为1200bps,n,8,1,初步计算接收完全部182字节数据需要1.67秒

QUOTE:
以下为blog主人的回复: 我现在没有硬件了,所以不能测试。 如果你能找到问题,请贴来,大家共享。 谢谢
回复 Jay 2006-12-3 23:36
请问那个软串口怎样用的, 我调了很久都没有调通, 小兵能给一个使用软串口的例子程序吗? 我把我的程序粘上来, 你看看有什么不对的地方吗? 我用的是ZLG的easyarm2200, 我把UART1的TXD接到P0.10, 但软串口怎么也收不到数据. void TaskStart ( void *pdata ) { pdata = pdata; /* Prevent compiler warning */ TargetInit(); OSStatInit(); /* Initialize uC/OS-II's statistics */ UART_Init(2); UART_Init(1); UART_Init(0); UART_open(2, 1200, 8, 'n', 1, 0); UART_open(1, 9600, 8, 'n', 1, 0); UART_open(0, 1200, 8, 'n', 1, 0); TaskStartCreateTasks(); //Create all other tasks for ( ;; ) { OSCtxSwCtr = 0; /* Clear context switch counter */ OSTimeDly(OS_TICKS_PER_SEC); /* Wait one second */ } } void Task2(void *argv) { char buff[256]; int len; argv=argv; for (;;) { len = UART_read(1, buff,sizeof(buff),0); buff[len] = '\0'; if (len>0) { UART_write(2, buff, len, 0); UART_write(1, buff, len, 0); } } return; } void Task3(void *argv) { char buff[256]; int len; argv=argv; for (;;) { len = UART_read(0, buff,sizeof(buff),0); buff[len] = '\0'; if (len>0) { UART_write(1, buff, len, 0); } } return; }

QUOTE:
以下为blog主人的回复: 我现在没有硬件了,所以不能测试。 如果你能找到问题,请贴来,大家共享。 谢谢
串口没问题 2007-6-5 23:11
工作、学习的路上做个伴好吗?我叫 安燕 QQ:125745783 最近我在找一个串口中间件,我认为周立功的那个太简单了。

QUOTE:
以下为blog主人的回复: ZLG的中间件我没有用过,效果不知道。 但是假如ZLG既简单又能用,那还是用简单的好一些。 在做嵌入式软件时简单即是功夫
非一般的串口 2007-8-19 09:58
你好!我把你串口驱动用到我们公司产品测试上去了,效果很好,很可能我们公司的产品串口驱动就使用你的串口驱动中间件了。但是我发现有个一个BUG(可能),这里提出来是希望跟大家讨论,问题代码就是串口中断部分的发送部分,具体如下: case 0x02://发送空 //while (ReadReg(UART_BASE_ADDR[port][LSR])&0x20)//发送寄存器空 for (i=0;i 0) //数据写入发送缓存区完成 ,不要立即关闭发送中断,而是正常完成发送后,等待下一次中断。 { b=*UART[port].TxBuffer; UART[port].TxBuffer++; WriteReg(UART_BASE_ADDR[port][THR],b); UART[port].nTxLeft--; } } break; 经过上面修改可以可靠发送完全部数据,盼主人,分析后答复。

QUOTE:
以下为blog主人的回复: 确实如此,你发现了我的代码中的这个Bug。 为什么我的代码在测试中没有发现这个Bug呢?因为我的串口发送没有依赖其他的硬件。相信你是在做Rs485时并且使用了单独的发送使能控制,对吧? 谢谢你
回复 johnzhu 2007-12-21 11:56
你好,大兵,好久没来这了. 最近我想扩展串口,你能否将SC16C2550和LPC22xx的接线电路原理图,提供出来供大家学习参考呢
回复 johnzhu 2008-5-7 18:41
楼主您好,能不能说说SP2338跟你这个串口驱动如何结合。
回复 呵呵 2009-7-29 11:37
学习了