EDN China > 技术文章 > 微处理器与DSP > CPU/GPU > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

LON总线的USB2.0接口卡的研制

来源:E代电子 / 作者:祁明晰 左相国?? 2006年07月02日 ?? 收藏0

  在8051的并口通信程序中,需要模拟3150的并口通信从A方式。以下为并口通信程序中主要模块的C51程序,包括同步模块(sync—loop());握手模块(hndshkO);并口数据传送接收模块(pio read();pio write(void));令牌传递模块(pass token())。

  void sync-loop(void)

  {unsigned char rb;

  do{RW=0;hndshk();PB=CMD RESYNC;CS=0;CS=I;hndshk();

  PB=EOM;CS=0;CS=1;hndshk();PB=0xff;RW=I;CS=0;rb=PB;

  CS=I;}while(rb!=CMD ACKSYNC);token=MASTER;}

  void hndshk(void)

  {while((hs=INTO)==1);}

  vo

id pio_read(void)

  {unsigned char cmd;unsigned char i;

  PB=0xff;hndshk();RW=1;cmd=PB;CS=0;CS=1;

  if(cmd==CMD—XFER){hndshk();pio.1en=PB;CS=0;CS=1;}

  else pio.1en=o=pass—token();}

  void pio-write(void)

  {unsigned char sd;

  hndshk();RW=0;PB=CMD—XFER;CS=0;CS=1;hndshk0;PB=pio.

  1en;CS=0;CS=1:

  for(sd=0;sd

  pass_token();RW=1;}

  void pass_token(void)

  {ifftoken==MASTER){hndshk();RW=0;PB=EOM;CS=0;CS=1:

  token=SLAVE;}

  else token="MASTER";}

??? 根据硬件设计,将3150芯片的I/O定义为并行(parallel)I/O对象类型。定义并行I/O对象的Neuron C源代码为IO 0 parallel slave P BUS,其中,P BUS为所定义的I/O对象名称。Neuron将从并口得到的报文解析,再利用Neuron C的消息传送机制,将解析的消息传送给适配器下层的应用节点。读取数据的Neuron C函数为io_in(),其格式如下:io in(P BUS,addressl);

??? 其中,P_BUS为并口IO对象名称,addressl为接收并口数据的地址。发消息的Neuron C函数为msg send()。

??? 值得注意的是,Neuron芯片的应用CPU在执行该io_in()函数时会处于等待状态,也就是说等待数据时应用CPU不能处理其它I/O事件、定时器终止、网络变量更新或报文到达事件。如果2 0字符时间内尚没有接收到数据,则可能使Wat Chdog定时器产生超时错。在10MHz的输入时钟下,watchdog的超时时间是0.84s(该时间随输入时钟而改变)。通常情况下,调度程序(scheduler)会周期性地对watchdog定时器进行复位,但当程序处理一个较长的任务(task)如io in()时,则有可能终止watChdog定时器,这将导致整个节点的复位。为避免产生这种情况,同时使程序尽可能多地接收到达的数据,本节点程序在接收数据这个任务中周期性地调用函数watchdog update()。

  4 结论

??? 本文所设计接口卡的主要目的是为带有USB接口的便携设备进行现场数据测量和现场监测提供高速、安全的通信接口。解决了令工程师头痛的便携设备与现场设备采用通用串口通信时传输速率低、经常掉线、连接不可靠的问题。


上一页123下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

USB? LON? 总线? 接口卡?

上一篇: 基于单片机的具有通讯口的智能温控表
下一篇: 基于DSP的数字示波器GUI的开发
相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
今日头条
精彩图集
有问题请反馈