单片机是PIC32MX795
有会的朋友家qq343527496
回帖也行
要程序设计代码
谢了
IC32单片机首先对UART进行设置。本课题选择串口的通信方式为半双工模式, 设置UBRRH 和UBRRL以使波特率为9600bps, 设置UCSRB以使接收器与发送器使能,通过UCSRC寄存器设置帧格式。接下来对ENC624J600进行初始化, 首先应查询ESTAT寄存器的CLKRDY位,确保在配置MAC和PHY寄存器前有足够的延时;PHY寄存器用来设置通信模式;编程ERXST和ERXND指针对接收缓冲器进行初始化, 当编程ERXST指针时,相同的值会自动更新ERXWRPT寄存器,接收硬件将从ERXWRPT中的地址开始写入已收到的数据, 为跟踪接收的数据,ERXRDPT寄存器也需要用相同的值编程;为了能最大限度地降低主控制器的处理工作量, ENC624J600配备了不同的过滤器,可自动拒绝不需要的数据包,所有的过滤器都由ERXFCON寄存器进行配置,可以使用ANDOR位对几个过滤器的测试结果作逻辑/与0或逻辑/或0运算;由于未被用作接收缓冲器的存储空间都作为发送缓冲器,所以不需要对发送缓冲器进行特定的初始化,通常将存储空间分配为大的接收缓冲器空间和较小的接收存储空间。最后, 由于ENC624J600占用单片机的中断口, 所以最后通过MCUCR寄存器对中断进行初始化设置。在初始化完成后,即进入主循环程序打开中断服务程序,单片机将反复检测ENC624J600是否接收到以太网帧(或者数据缓冲区B中有数据需要发送),当有数据接收(或者发送)时则调用相应的子函数处理, 将数据存入数据缓冲区A(或者发送至以太网上)。
由于RS485数据报为短帧,所以在传输层采用UDP协议,以太网控制器协议转换模块主要负责将接收的UDP数据报中解析出RS485协议报文,并将其存入数据缓冲区A中;或者将数据缓冲区B中的RS485协议报文封装成UDP数据报,然后发送到以太网上。在RS485通信协议、以太网协议都能正常运行的情况下,要实现2种协议间的数据转换非常简单,当RS485成功接收到一帧数据后,分离出数据部分,然后将数据打包成以太网协议栈格式,发送到以太网即可以太网到RS485的数据转换与此相反。
|