前提

对STM32双网口实现的方案的继续探究,比较多见的都是

  1. W5500
  2. DM9000
  3. ENC28J60

通过研究,我还发现了一类比较少见但是灵活的方案
交换机芯片
也就是本文提到的这个KSZ8863

一颗LQPF48脚的3口10/100M的以太网交换芯片

目前(21年9月份)在立创上的价格是:

简单说就是这芯片就实现了一个三口管理型交换机…而且价钱还算比较OK,当然现在疫情的原因,买不到/要订货啥的我也不意外。

最新进展

总结下:

也算是给自己一个交代了,不想搞了,不知道SPI的配置功能到底为啥不行~~

22年6月底第二次打板
4. 22年6月底第二次打板,我重新再认真读了官方模块的手册和数据手册,改了下原理图,SPI还是类似的现象,还是读不出…呜呜呜
相较上一版本,加了一个LDO,优化走线布局,认真的理了理SPI部分的走线,结果还是读不出来,真的是很无奈~~~

这次读出来的不是FF了,好像是主机发什么,它就返回什么,02指令和03指令都试了
抛开这个配置,交换机本身的功能是可以的,这个没啥好说,这次打板PCB没有改这部分。。。



22年2月第一次打板

  1. 网络似乎是能够通信上(脱开开发板,2个口与电脑双向PING通(普通交换机功能),接上开发板的RMII接口,开发板通过 RMII接口可以与电脑正常网络通信,两个口单独使用都可以,但是两个口一起插网线,驱动挂了,可能要改驱动(驱动基于LAN8720))
  2. SPI配置功能没调通,RMII接口读PHY的信息都读不到,不知道原因,但是网络通信却是正常的.
  3. 驱动可能要研究下LWIP多个网卡怎么搞?

疑点1-RMII接口

似乎原生驱动LAN8720的程序好像没有使能MDIO这个外设??那LAN8720是如何在仅仅初始化了RMII接口之后获得到PHY相关的信息的了?

看H743的手册,我好像有点明白了~~~
H743的网络接口有三种
a) RMII(目前用的)
b) SMA(站管理模式)
c) MII

SMA接口就是需要使用MDIO和MDC数据线传输数据的方式与PHY芯片通信的

通信的数据帧格式和交换机芯片的一致

这个是可以设置时钟的

在RTT LAN8720驱动代码里,确实找到了这样一句HAL驱动函数的调用

void HAL_ETH_SetMDIOClockRange(ETH_HandleTypeDef *heth)
{uint32_t tmpreg, hclk;/* Get the ETHERNET MACMDIOAR value */tmpreg = (heth->Instance)->MACMDIOAR;/* Clear CSR Clock Range bits */tmpreg &= ~ETH_MACMDIOAR_CR;/* Get hclk frequency value */hclk = HAL_RCC_GetHCLKFreq();/* Set CR bits depending on hclk value */if((hclk >= 20000000U)&&(hclk < 35000000U)){/* CSR Clock Range between 20-35 MHz */tmpreg |= (uint32_t)ETH_MACMDIOAR_CR_DIV16;}else if((hclk >= 35000000U)&&(hclk < 60000000U)){/* CSR Clock Range between 35-60 MHz */tmpreg |= (uint32_t)ETH_MACMDIOAR_CR_DIV26;}else if((hclk >= 60000000U)&&(hclk < 100000000U)){/* CSR Clock Range between 60-100 MHz */tmpreg |= (uint32_t)ETH_MACMDIOAR_CR_DIV42;}else if((hclk >= 100000000U)&&(hclk < 150000000U)){/* CSR Clock Range between 100-150 MHz */tmpreg |= (uint32_t)ETH_MACMDIOAR_CR_DIV62;}else /* (hclk >= 150000000)&&(hclk <= 200000000) */{/* CSR Clock Range between 150-200 MHz */tmpreg |= (uint32_t)ETH_MACMDIOAR_CR_DIV102;}/* Configure the CSR Clock Range */(heth->Instance)->MACMDIOAR = (uint32_t)tmpreg;
}

似乎目前HAL库里面是关联了HCLK时钟的

有没有可能是因为芯片的HCLK时钟设置的比较高,导致对应这个MDIO的时钟设置的过高(超过了5MHz)导致访问交换机芯片读出的内容都有问题 。
应该不是的,用 LAN8720的驱动打断点看了函数的执行
HCLK 200Mhz, 它是走了CSR/102这个分支,对应算下来MDC时钟应该不超过3MHz,应该是没有超过5Mhz的上限。


或者说还有一种可能

因为LAN8720是使用RMII接口驱动。 实际上RMII接口下,MDIO实际上并没有使用,也没有初始化呢,导致读取的值都是异常值?
应该不会,因为LAN8720的网线断开插入后重新连接应该是会用到MDIO查询PHY的,不可能RMII接口不联动这个MDIO,不然这个重新连接怎么实现的呢?


单独做了一个只有MDIO接口的工程,尝试读了,也是读不出来.


疑点3-SPI接口

难道SPI驱动那里驱动没调好???

再次用CubeMx单独做了个15MHz/7.5MHz的SPI4接口(模式0和模式3)的工程分别试了试
用逻辑分析仪抓了通信,读出来都是FF

跟它提供的多字节读的波形应该对的上呀,但是读不出来?

难道说SPI接口的线和板子的电源层短路了,所以被拉高?
这个也拿万用表量了引脚和VCC,也没有短路,引脚也是通到了座子上的
上次调也有试过下掉MISO/MOSI这两条上拉电阻,拿USB转SPI仪器去读,也是读不出来,全是FF

看来是无解了


原理图,送给大家(这个要积分哈),虽然有点问题,但是单纯做交换机本身还是可以用的
说不定有大佬能够搞明白哪里画的不对,能够解决上面的问题

自己画的原理图


22.2.25
‌1. spi读不到任何数据,全是ff,手册说要用模式0或者3来读,都试了,也换了SPI频率,都是一样,读不出任何东西,都是FF。

试了12M,24M的SPI频率都不行,都是读出来都是FF(这里忘记截图了,现象很奇怪)

指令说是"3"是数据读,"2"是数据写
但是它下面给 的波形图,好像又不是这样的,“2”和"3"我都试过了,都不行…

读和写都是"2"???

板子这边我也是参考这个官方核心板的原理图上的说法做的
SPI接口: P2LED1不用下拉(NG不贴),P2LED0.1K下拉到地

SPI接口: P2LED1不用下拉(NG不贴),P2LED0.1K下拉到地


手册也说,配置模式,就是上电,复位完毕时候读取这两引脚的状态,决定配置的方式。

反正就是啥也读不出,不知道为啥…

‌2. 网络部分,rtt的lan8720驱动把读软复位的功能去掉之后,网络是通的,只要不同时两个口插网线,只要插了双网线,驱动会有问题(问题 可能是原来只注册了一个网卡,两个网卡同时在的话,它就会有异常了).

双向ping都是通的,但是用mdio口读芯片的phy寄存器信息全部是FFFF…有点怀疑是不是芯片有问题(X宝买的,目前X宝有卖,立创买不到,没办法),原来给LAN8720配PHY地址原来是0,然后试过1,2,3,好像都可以ping的通,网络也是正常的**(按手册描述,应该是3才对(3对应的是RMII接口),1和2是它外扩的RJ45)**。


22.2.23
半年工作比较忙,终于有空把所有信息整合,画原理图,PCB,打样,把初版核心板制作出来了

后期如果调通完,我就放出原理图

先晒下效果。。
先是板子,我引出了RMII接口和SPI管理接口和电源接口
唯一小遗憾的是应该加一个LED电源指示灯,因为它上电以后,不插网线的情况下,是没有任何反应的

插上网线的效果(一头接交换机,一头接PC)

PC端显示网络正常(100M),网络通信也是正常的!!因为我是在内网环境下,我试着访问了内网的一个服务器也是正常的。


芯片信息汇总

(我会提供这些收集到的文档和资料在我的csdn,不要积分下载):
https://download.csdn.net/download/tpoem/21883787

手册在微芯官网上可以查

原理框图大概是这样的

一共三个MAC,两个PHY。
其中MAC3是可以通过RMII/MII接入处理器或者PHY芯片的[手册24页],它下面也附录了接的方法

MII/RMII的解法

microchip收购了micrel这个牌子,所以KSZ系列芯片以前是这个公司的

接PHY或者MAC的方法


接的时候也有一些坑的地方
注意看这个表格,Clock Source那里,有特殊的接线的描述

关于RX_ER的问题

它这个芯片没有提供EX_ER信号出,它自身过滤了错误帧,它有特殊的做法

关于MII 管理帧格式和SMI管理帧格式

MII管理帧格式如下(这个就是芯片提供的MII/RMII接口的那个MDC/MDIO的通信协议)

看H743的描述理论上应该式可以用MDIO与交换机通信的
但是交换机芯片对MDIO时钟有限制(最大5MHz)

关于供电

这个芯片需要3.3V+1.8V供电(这个芯片内置1.8V LDO),它1.8V的引脚有特殊接法【磁珠隔离数字电源和模拟电源】

这个在微芯官方的8863模块(它是RMII接口输出的)上也有体现
来源于这个文档

关于网络变压器和网口选择

上面这个官方模块用的是一个带隔离变压器的双口RJ45座子,手册和它官方的原理图上都提供了推荐网络变压器选型,至于RJ45座子,这个可能要采取类似于官方模块这种变压器构型的或者无变压器的座子吧

其中这个型号立创上有卖,还挺多货,可以!!

关于配置交换机的功能

芯片支持必要的网管功能,可以通过SPI/SMI/I2C配置,还可以将配置写到一片外部的EEPROM(24Cxx)上,实现配置信息自动加载,无管理交换机的功能。

芯片上电启动或者复位后的时候会优先从外部EEPROM读配置信息,然后引脚恢复成其他功能。
或者直接用I2C读芯片的所有寄存器

关于外部EEPROM的配置信息如何制作

这里参考这个链接,官方其实做了一个小工具
EEPROM的配置信息制作

【KSZ8863】KSZ8863交换机芯片的信息汇总与打板验证结果相关推荐

  1. wifi芯片行业信息汇总

    1.Wifi概述 Wi-Fi这个术语被人们普遍误以为是指无线保真(Wireless Fidelity),并且即便是Wi-Fi联盟本身也经常在新闻稿和文件中使用"Wireless Fideli ...

  2. Khronos 在GDC上的信息汇总:Vulkan,OpenXR,WebGL,glTF

    Khronos 在GDC上的信息汇总:Vulkan,OpenXR,WebGL,glTF 游戏开发者大会,旧金山– The Khronos™ Group, 一个由领先硬件和软件公司组成的组织,在游戏开发 ...

  3. Oracle Open World 2012信息汇总贴

    Oracle Open World 2012信息汇总贴: 建设中.. Oracle OpenWorld 2012 sessions下载地址:Search Content Catalog for Ora ...

  4. 黑龙江大学计算机调剂信息,黑龙江大学各学院2019考研调剂信息汇总(4月1日)

    今天小编为大家提供黑龙江大学各学院2019考研调剂信息汇总(4月1日),请大家仔细查看考研调剂专业及考研调剂要求,尽早做好调剂准备! 黑龙江大学各学院2019考研调剂信息汇总(4月1日) 黑龙江大学化 ...

  5. 遵义大数据中心项目工程概况_中策大数据:8月建筑工程项目有哪些?建筑工程项目信息汇总...

    2020年8月建筑工程项目有哪些?中策大数据中国工程网为你搜集整理出了建筑工程项目信息,包括项目环评.施工单位招标.施工建设.项目设计.立项审批等各个工程项目阶段的拟在建项目. 2020年8月建筑工程 ...

  6. 近期 AI 领域招聘、招生信息汇总

    关注公众号,获取更多AI领域发展机会 马上就要开启新的一年了,AIoffer把一月至今发布的招聘招生信息汇总如下,这里面既有巨头也有新锐,有全职也有实习还有升学机会,有需要的朋友欢迎点击查看详情.投递 ...

  7. 近期海内外 AI 领域招聘、招生信息汇总

    请点击: 近期 AI 领域招聘招生信息汇总 查看详情. 走过2020,迈向前程似锦的2021~

  8. 小学 学生学籍信息汇总及自动检查代码(Python)

    2019独角兽企业重金招聘Python工程师标准>>> 将每个学生填写的信息在检查后自动汇总到一个新的excel表格. #-*- encoding: utf-8 -*- '''小学学 ...

  9. Abaqus CPU并行计算 加速计算信息汇总

    Abaqus CPU并行计算 加速计算信息汇总 下面是网络上https://www.eng-tips.com/viewthread.cfm?qid=445089的答疑: In Abaqus CAE, ...

  10. 厦门大学计算机科学专业,2018厦门大学计算机科学系考研招生信息汇总

    原标题:2018厦门大学计算机科学系考研招生信息汇总 选择决定命运,成败在于坚持,既然选择了考研,说什么也别放弃,其实成功就是在艰难时刻的最后一次坚持!为了帮助2018年准备考研的备考生们尽快进入复习 ...

最新文章

  1. 朴素贝叶斯分类器详解及中文文本舆情分析(附代码实践)
  2. #研发解决方案#基于Apriori算法的Nginx+Lua+ELK异常流量拦截方案
  3. 【深度学习】Keras和Tensorflow框架使用区别辨析
  4. DisplayPageBoundaries 打开word后自动将页面间空白隐藏 (auto+定时器)
  5. PHP 依赖镜像出问题后,阿里工程师的一顿“神操作“令人叫绝!
  6. (转)扩展KMP算法模板
  7. python递归列文件_python-Bash:从最大列递归地向文件写入一行
  8. C#并发编程之异步编程(一)
  9. 8日直播预告丨Oracle 19c X86下移经验分享
  10. Leetcode - Permutations I,II
  11. python sklearn: 模型(如 SVM,PCA等)的保存与加载调用
  12. python第五十二课--自定义异常类
  13. 如何在 Mac、iphone 中快速清除已完成的提醒?
  14. Qt实现 文件比较工具
  15. git commit --amend撤销方法
  16. 项目引入船讯网海图插件
  17. java 日期 yyyy_Java时间格式化时YYYY(大写)和yyyy(小写)的区别
  18. android app卸载以后弹出用户反馈界面
  19. python:实现newton_forward_interpolation牛顿前插算法(附完整源码)
  20. String,StringBuffer,StringBuffer的区别

热门文章

  1. java内嵌浏览器的几种方式
  2. 杰魔(Geomagic Design)逆向工程软件学习0-产品逆向工程介绍
  3. keras 中文文档学习一
  4. 邻接矩阵实现(有向邻接矩阵)、(无向邻接矩阵) 基于C++
  5. iOS逆向工程整理 HOOK微信抢红包
  6. java中数字循环嵌套举例,在Java程序中,复杂算法可以通过循环语句和的相互嵌套来实现。...
  7. cad导出pdf_关于PDF文件修改、生成、导图片用这一个软件就够了
  8. 微信小程序开发教程、小程序资讯、小程序demo合揖(10月16日更新)
  9. CPC系统在win10上的安装,1小时快速安装
  10. 网页版结题报告html没了,[转载]我的结题报告