基于ARM处理器的CAN-Ethernet通信模块实现
以下为文章全文:(本站微信公共账号:cartech8)

汽车零部件采购、销售通信录 填写你的培训需求,我们帮你找 招募汽车专业培训老师
nGCSx 是处理器的地址组选通信号,S3C44B0x 将外部地址空间从地址0 开始,每32M划分为一个组(Bank ) ,外部寻址时地址线A0 ~ A24 输出组内地址,该地址所在的组的组选通信号同时有效。图中虚线代表写操作时的DIR 信号,实线为读操作的信号。从图中可以得到使用ABEL 语言描写的的信号生成逻辑式为: OE = (nOE &nWE) # (nGCS3 &nGCS4 &nGCS5) ; DIR = nOE # (nGCS3 &nGCS4 &nGCS5) ; 但是为了使系统更加稳定地工作,应保证OE 信号有效时DIR 信号不发生变化,也就是说进行读操作时图中OE 低电平脉冲的前沿应晚于DIR ,后沿应早于DIR ,这样将出现反馈逻辑,可以使用类似于同步时序电路的设计方法设计。图4 是OE 信号和DIR 信号的次态卡诺图,次态符合上述要求,并且在输入一定的状态下,OE 信号和DIR 信号总是每次改变一个,逐次进入最后的稳态状态(粗体字表示) 。图中“×”表示不会出现的输入状态。
图4 OE 和DIR 次态 卡诺图 根据卡诺图重新写出的次态逻辑产生式,消除单独输入(包括OE 和DIR 的当前状态) 变化可能引起的竞争- 冒险现象后为: OEn = (nOE &nWE) # (nOE & ! DIR) # (nWE &DIR) # (nGCS3 &nGCS4 &nGCS5) ; /// DIRn = ( ! OE &DIR) # (nOE &DIR) # (nOE &OE) # (nGCS3 & nGCS4 &nGCS5) ; 编译GAL 逻辑时应严格按照逻辑式生成与或逻辑。 2. 2 CAN 总线通信控制芯片SJA1000 的读写 CAN总线通信控制芯片SJA1000 没有提供单独的地址线,而使用可以与Intel 和Motorola系列微控制器兼容的分时复用地址/ 数据线。在一个读写周期内,微控制器首先输出操作地址并使地址锁存信号ALE 有效,SJA1000 在ALE 信号的下降沿将操作地址锁在片内;之后微处理器发出读写信号进行数据传输。但S3C44B0x 的数据线和地址线是分离的,对SJA1000 的读写操作需要模拟微控制器,先在数据线上写一个操作地址,并模拟产生一个ALE 信号锁存这个地址,之后进行正常的读写操作。系统使用地址线ADDR0 区分地址传输和数据传输:写奇地址时,不选通SJA1000 芯片,但给出一个有效的模拟ALE 信号;读写偶地址时,选通SJA1000 读写数据。另外,系统同时有两路CAN 总线接口,读写操作根据地址线ADDR1 区分两个SJA1000 芯片,两个片选信号和ALE 信号都要通过GAL 芯片产生,各信号如图5所示。
图5 SJA1000 控制信号的产生 图中虚线是向SJA1000 传输和锁存地址的过程,实线是读写操作的过程。用ABEL 语言书写的各信号产生逻辑式为: CAN-CS = nGCS4 # ADDR0 ; ALE = ! nWE &ADDR0 & ! nGCS4 ; 对SJA1000 的操作地址如下:地址锁存向0x08000001端口写地址;数据读写通过地址0x08000000。 3 通信模块的软件设计 通信模块和CAN 总线上的设备节点之间直接通过SJA1000收发CAN 总线报文进行通信,报文中的数据格式可以是基于CAN 总线的上层标准协议,也可以由用户定义。为了方便与以太网上计算机的通信,CAN-Ethernet 通信模块在以太网一端使用UDP协议,这样,计算机上的软件可以使用操作系统提供的网络访问服务。 每一个CAN-Ethernet 通信模块需要设定局域网内一个惟一的IP地址,通过固定的UDP端口和计算机通信。模块和计算机之间既可以使用对单点IP的通信,也可以在UDP端口发送广播报文。在以太网一端,通信模块接收到UDP 报文后,将其中的信息组织成CAN 总线报文发往CAN 总线;在CAN 总线一端,通信模块接收报文标识能够通过本节点接收码和接收掩码设置的CAN 总线报文,并封装为UDP 报文,转发到以太网上。各节点IP 地址、UDP工作端口和CAN报文接收掩码等设置在系统初始化时进行。 |
文章网友提供,仅供学习参考,版权为原作者所有,如侵犯到
你的权益请联系542334618@126.com,我们会及时处理。








会员评价:
共0条 发表评论