Switcc 发表于 2018-2-27 14:08:49

STM32H743 以太网问题 DP83848

小弟公司正在开发基于H743的应用,以前用的都是F4系列,网络一直没有问题。新上的H743 cube库只有Lan8742的例子。
而且H7的和F4,F7相比,有较大变动。难道需要自己写DP83848的驱动吗?

wudianjun2001 发表于 2018-2-27 15:22:46

把以前的驱动移植过来

Switcc 发表于 2018-2-27 16:58:42

wudianjun2001 发表于 2018-2-27 15:22
把以前的驱动移植过来

你的意思是把F7网络库移过来吗,二者网络库有很大差别

nyszx 发表于 2018-2-27 21:10:06

你现在只是换了PHY,不管是DP83848,还是Lan8742,他们都是有标准的通的MII/RMII接口,以及标准的基础参数寄存器,虽然换了内核,变化较大,但外设还是基本相同的,配置与使用差别不多,所以驱动移植一下应该不困难。

Switcc 发表于 2018-3-1 09:36:38

nyszx 发表于 2018-2-27 21:10
你现在只是换了PHY,不管是DP83848,还是Lan8742,他们都是有标准的通的MII/RMII接口,以及标准的基础参数寄 ...

能指导一下吗,是把以前F4使用的库移植过来还是使用H7的库,在H7的库上修改成对应的网卡

nyszx 发表于 2018-3-1 21:00:47

Switcc 发表于 2018-3-1 09:36
能指导一下吗,是把以前F4使用的库移植过来还是使用H7的库,在H7的库上修改成对应的网卡 ...

使用相同的库的话,上层应用应该变化也不大吧,比如STM32F746ZG-Nucleo lwip例程,只需要修改stm32f7xx_hal_conf.h中一下跟PHY相关就可以了:/* Section 2: PHY configuration section */
/* LAN8742A PHY Address*/ 改为DP83848实际地址
#define LAN8742A_PHY_ADDRESS            0x00U
/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/
#define PHY_RESET_DELAY               ((uint32_t)0x00000FFFU)
/* PHY Configuration delay */
#define PHY_CONFIG_DELAY                ((uint32_t)0x00000FFFU)

#define PHY_READ_TO                     ((uint32_t)0x0000FFFFU)
#define PHY_WRITE_TO                  ((uint32_t)0x0000FFFFU)

/* Section 3: Common PHY Registers */这些标准寄存器是通用的,核对数据手册检查对应的功能和地址是否有变化,应该没啥差别,有的话修改就好

#define PHY_BCR                         ((uint16_t)0x00U)    /*!< Transceiver Basic Control Register   */
#define PHY_BSR                         ((uint16_t)0x01U)    /*!< Transceiver Basic Status Register    */

#define PHY_RESET                     ((uint16_t)0x8000U)/*!< PHY Reset */
#define PHY_LOOPBACK                  ((uint16_t)0x4000U)/*!< Select loop-back mode */
#define PHY_FULLDUPLEX_100M             ((uint16_t)0x2100U)/*!< Set the full-duplex mode at 100 Mb/s */
#define PHY_HALFDUPLEX_100M             ((uint16_t)0x2000U)/*!< Set the half-duplex mode at 100 Mb/s */
#define PHY_FULLDUPLEX_10M            ((uint16_t)0x0100U)/*!< Set the full-duplex mode at 10 Mb/s*/
#define PHY_HALFDUPLEX_10M            ((uint16_t)0x0000U)/*!< Set the half-duplex mode at 10 Mb/s*/
#define PHY_AUTONEGOTIATION             ((uint16_t)0x1000U)/*!< Enable auto-negotiation function   */
#define PHY_RESTART_AUTONEGOTIATION   ((uint16_t)0x0200U)/*!< Restart auto-negotiation function    */
#define PHY_POWERDOWN                   ((uint16_t)0x0800U)/*!< Select the power down mode         */
#define PHY_ISOLATE                     ((uint16_t)0x0400U)/*!< Isolate PHY from MII               */

#define PHY_AUTONEGO_COMPLETE         ((uint16_t)0x0020U)/*!< Auto-Negotiation process completed   */
#define PHY_LINKED_STATUS               ((uint16_t)0x0004U)/*!< Valid link established               */
#define PHY_JABBER_DETECTION            ((uint16_t)0x0002U)/*!< Jabber condition detected            */

/* Section 4: Extended PHY Registers */

#define PHY_SR                        ((uint16_t)0x1FU)    /*!< PHY special control/ status register Offset   */

#define PHY_SPEED_STATUS                ((uint16_t)0x0004U)/*!< PHY Speed mask                                  */
#define PHY_DUPLEX_STATUS               ((uint16_t)0x0010U)/*!< PHY Duplex mask                                 */


#define PHY_ISFR                        ((uint16_t)0x1DU)    /*!< PHY Interrupt Source Flag register Offset       */
#define PHY_ISFR_INT4                   ((uint16_t)0x0010U)/*!< PHY Link down inturrupt                         */
再检查一下ethernetif.c中底层初始化相关的,如果有外部中断的话,再检查中断配置是否一致。

Switcc 发表于 2018-3-8 19:01:11

nyszx 发表于 2018-3-1 21:00
使用相同的库的话,上层应用应该变化也不大吧,比如STM32F746ZG-Nucleo lwip例程,只需要修改stm32f7xx_h ...

直接在H7 的例程上改的,网卡寄存器都能读,但是网络还没通

xiaoshen-372360 发表于 2018-8-17 17:36:17

你可以按照原来的DP83848的程序模式来写,变得只是STM32这段的寄存器操作以及库函数操作之间存在的差异,驱动着一块的东西都是套路,按照套路来就可以了

hpdell 发表于 2018-10-3 15:49:28

Switcc 发表于 2018-3-8 19:01
直接在H7 的例程上改的,网卡寄存器都能读,但是网络还没通

字节对齐 或者 mpu 配置,貌似关键是 mpu 配置

正常来说,不管是 f4, f7 的dp83848,随便哪个都是可以移植到 h7上的,如果是库就更方面了

qianshishangdi 发表于 2018-11-14 15:19:25

大佬,能分享一下代码吗,快被这个搞晕死了,我在原子的例程上搞的移植,还是不行
页: [1] 2
查看完整版本: STM32H743 以太网问题 DP83848