碎碎记 1

LAN8742->KSZ8041

STM32Cube配置以太网默认的PHY为LAN8742, 支持PHY地址自动搜索, 抱着试一试的态度, 虽然外部PHY是KSZ8041, 直接运行LAN8742的程序, 仍然是可以ping通的. 具体寄存器未查看.

lan8742.c有个2000的宏定义, 每次初始化会死等2000ms, 显得初始化很慢, 可以视情况手动改小, 当然每次Cube自动生成代码又会回到2000

#define LAN8742_INIT_TO        ((uint32_t)2000U)

晶振负载电容

无源晶振的负载电容不是外部焊接的电容

CL=(C1*C2)/(C1+C2)+C''
CL: 负载电容
C1 C2: 晶振两端焊接的实际电容, 一般常见 C1 = C2
C'': 线路杂散电容, 常见范围 4~6pF

可以用示波器查看是否过驱

假设无源晶振的负载电容是10pF, 考虑到电容高低温容量的变化, 常见焊接的有20pF的(2倍左右, 可以用示波器查看是否过驱适当调整), 如果直接焊10pF, 可能会碰到下面诡异的现象:

  • 板子有的起振, 有的不起振
  • 有的夏天能工作, 冬天不能工作
  • 有的高低温试能过, 但也有概率过不了, 这种情况也有可能是复位电容随温度变化导致非正常复位了

千兆网络线序

千兆变压器因为是对称的, 为方便布线, 1 2 3 4 和 4 3 2 1 走线都可以, 但是禁止RJ45调线, 比如自己调换RJ45的4和6pin, 然后拿标准网线裁掉, 自己在另一端调线, 或者是工业M12之类出网口线, 淘宝买M12转RJ45, 然后自己调线序的, 这个时候会碰到的情况:

  • 线比较短, 直接接电脑网口是千兆sudo ethtool eth0, 接交换机变成了百兆
  • 不论怎么接都是百兆

因为线序不对, 网络对内部双绞线绞错了啊. 实在是不想改板子或订做线, 只能做的超级短, 一端M12, 另一端RJ45母座

串口

踩过的坑:

  • 测试的外部晶振25M, 实际焊的是8M
  • 初始无打印, TX2起来后MCU才能打印, 原因是232芯片用的TX2的电, TX2没起来, MCU初始化自然打不出来
  • printf用开源的嵌入式printf实现, 或者自己实现, 或者勾选MicroLib, 不然网络里面有printf, MCU直接死机…
  • 某LoRa模块串口速度一快就黏包, 刚好搞死了DMA空闲接收中断, 去掉Cube里面的OverrunDMA on RX Error, 并且程序内部处理黏包

欢迎扫描二维码关注微信公众号, 及时获取最新文章:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值