wince系统中,GPIO如何模拟串口 ——新手请教*可加分

snow_haoxue 2008-06-19 10:24:11
现在需要在winCE系统下,使用GPIO来模拟串口
...全文
271 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
snow_haoxue 2008-06-23
  • 打赏
  • 举报
回复
谢了,呵呵,好久没有更新了——不过,我会好好学习的
能否交个朋友,硬件/嵌入式开发相关方面我还是很无知的,完全是个新手,有很多想要学习,但并不知道怎样一步一步来学习,如果可以跟你学习一下^_^
zhujinqiang 2008-06-20
  • 打赏
  • 举报
回复
winCE系统下,使用模拟串口会有好效果吗?
shuiyan 2008-06-20
  • 打赏
  • 举报
回复
你做应用程序?不做驱动?
也就是说你必须在应用程序级别模拟串口?
驱动给你开放了操作IO口的权限吗?

看来你对串口并不了解,那先去看看串口到底是什么,以及相应的协议。
shuiyan 2008-06-20
  • 打赏
  • 举报
回复
说的严重了,哪里是什么“质问”,只是希望在回答具体问题前,能弄清楚问题的背景,不然答非所问。

同样,也希望你问问题的时候,能描述清楚问题的环境及背景,不然我们以自己的经验简单判断,可能与你的需要相差很远的。

多的不说了,给你推荐个地方:
http://www.gjwtech.com/serialcomm.htm

龚建伟的网站,他的串口调试助手是很常见的PC上的工具,应用很广。你将他网站的文章看一下,肯定能对串口有深入的了解。不要心急,大概2天就能看完的。
snow_haoxue 2008-06-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 shuiyan 的回复:]
你做应用程序?不做驱动?
也就是说你必须在应用程序级别模拟串口?
驱动给你开放了操作IO口的权限吗?

看来你对串口并不了解,那先去看看串口到底是什么,以及相应的协议。
[/Quote]

谢谢你的质问,呵呵,我快要无语了
是的,之前,在dll中写一些算法,编写一些界面相关的应用程序,但不写驱动
而我现在是要做另一份工作,不是要在应用程序级别写驱动,是要针对一个终端的硬件写
因此啊,我说我是新手,要从头来学习的,还请您赐教
至于串口是什么以及相应的协议,我在大学理学过一些,但是仅是皮毛,我会进一步学习
如果您有什么好的资料可以给我借鉴一下,我不胜感激

ps:如果我这里相关问题得到解决,分数全部奉上
snow_haoxue 2008-06-19
  • 打赏
  • 举报
回复
各位,发帖时不小心就按了回车,晕哪
给分还没来得及选择:100,一天内帖子不能加分……
希望大侠们给点建议,我才接触这个东西,想学习一下,当然也是工作需要
snow_haoxue 2008-06-19
  • 打赏
  • 举报
回复
谢谢大虾的指点
如果我是设计者,我一定慎重考虑你所说的串行模拟带来的问题
不过,眼前的问题是,我一点也没有头绪,这个很郁闷
以前是做应用程序的,和硬件没有任何接触,啊——疯了
现在要做这个,只有大学里仅剩的一点硬件相关的底子了,可是很皮毛
请您具体指教一下,不胜感谢^_^
shuiyan 2008-06-19
  • 打赏
  • 举报
回复
串口模拟在单片机上就能做,wince至少是ARM9等级,那想做是能做的,功能肯定是能实现的。当然,首先你得真正的理解串口通讯原理。
发送,就按照串口协议,定时的将IO口拉高拉低就行了。
接收,定时的读取IO的状态,逐次移位到一个8bit(1 char)数据类型中就行。从采样率定理讲,采样频率至少是通讯频率的2倍才能获得有效数据。

只是,在wince操作系统中,强行模拟串口有如下的性能问题:
1. 高端CPU之所以加入N多的外设接口,本来就是想释放CPU以加强CPU的运算、处理能力的,尤其是编解码及刷屏。
而GPIO的反复操作(配置、读取),是需要CPU直接参与的,将耗费大量的CPU时间。因此肯定会影响CPU的性能。

2. 串口是异步通讯,必须有一个严格精确(不是绝对精确)的时钟来进行采样定时。偏偏在操作系统里面,“定时”这个工作是很难完全实现的,因为系统有线程的存在,你必然需要将串口的线程设为最高优先级,不然很容易被别的线程给挤掉,除非你确定用户只运行你指定的有限程序。
一个最低端的IO口操作,却不得不设为最高优先级,这样同样会影响系统原本的性能。

3. 系统的中断一大堆,比IO口中断等级高的太多了,只要中断2次,就能让串口丢掉一次正确的数据,这肯定是不希望看到的,但这又是很难解决的,除非禁止掉别的中断。这个和系统的线程优先级不是一个概念。

4. 因为以上原因,模拟串口,一般不建议高速率,常用都在9600及以下。即使如此,仍然需要考虑串口的FIFO。

做事先没有最好,只有最不坏。先考虑可能碰到的问题,再去做,免得浪费自己的时间精力。

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧