我的环境是stm32+ax88178+vsc8211
usb转千兆网口,现在算是调通了,lwip上能ping通400以下的包,400以上还有点问题。。
原来今天想找点时间把博客整理一下的,发现太乱。。哎我还是写点即时感受吧,很多东西过了热情就不想写了。
大概介绍一下stm32的usb和ax88178
stm32用的是stm32f107,上面有一个otg的usb接口,这里我作为usb host only来使用。意法只有stm32作为usb device的驱动,因为没有usb host免费的协议栈也就没有usb host的例程,只有底层驱动和几个二进制文件。不过像我这种只要针对ax88178一个设备来说,自己写个简单的还能用的也不难,这点可以仿照意法给的usb device的例程,还是有学习的地方的。usb host的部分由于没有例程完全照着datasheet一步步开发,没其他方法只有datasheet,翻过来翻过去。
ax88178这部分也是,asix官网上只有基于linux和windows的驱动,像我用的uc/os,和没有系统差不多,ax88178的驱动也是自己开发的,这部分除了datasheet还可以参考linux下的驱动,还是很有帮助的。
ax88178的usb有五个端点:
ep0,控制,输入输出,usb的控制。
ep1,中断,输入,一些网口状态信息。
ep2,块,输入,接收的网络数据。
ep3,块,输出,发送的网络数据。
要注意的有三点:
1)读写phy芯片的控制命令前,需要发送一个命令,datasheet有说明。
2)发送ep1中断时,也需要提前发送一个命令,datasheet也有说明。
3)ep2和ep3中的数据,ip包包头有个四字节的头,前两字节表示包长,后两字节是包长取反验证用
vsc8211没有细看,我就知道前期网口连接上,他会自适应,然后我去读0x1C寄存器得到现在网口链接的信息。
阅读(2732) | 评论(0) | 转发(0) |