Presentation is loading. Please wait.

Presentation is loading. Please wait.

《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:

Similar presentations


Presentation on theme: "《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:"— Presentation transcript:

1 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺: 技术论坛: 开源电子网 公众平台:“正点原子” 官方网站: 联系电话: ddddd ALIENTEK 淘宝店铺: 技术论坛:

2 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
《手把手教你学STM32》 F1开发板LWIP无操作系统移植 适用平台 适用平台 STM32F1xx 开发板 (正点原子) STM32F4xx 开发板 (正点原子) STM32F4xx 开发板 (正点原子) ENC28J60 模块 (正点原子) ddddd 淘宝店铺: 技术论坛:

3 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
本视频重点参考资料 参考资料: 1,战舰V3 STM32F103开发板 《STM32F1 LWIP开发手册》——第一章 LWIP无操作系统移植 2,DM9000参考资料 见光盘:硬件资料芯片资料 ① DM9000A.pdf 淘宝店铺: 技术论坛:

4 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
目录 DM9000 1 硬件连接 2 驱动程序 3 淘宝店铺: 技术论坛:

5 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
1、DM9000 1.1、DM9000A简介 DM9000 是一款完全集成的、性价比高、引脚数少、带有通用处理器接口的单芯片快速以太网控制器。 自带一个 10/100M PHY 和 4K 双字的 SRAM , DM9000A 为适应各种处理器提供了8位、16 位数据接口访问内部存储器,DM9000拥有自动协商功能,DM9000特性如下: 1、集成自适应(TUTO-MDIX)10/100M收发器。 2、内置16k字节的SRAM。 3、支持硬件帧校验。 4、兼容3.3V和5.0V输入输出电压。 淘宝店铺: 技术论坛:

6 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
1、DMA9000 DM9000中断引脚电平设置 DM9000的34(INT)引脚为中断输出引脚,默认情况下该引脚高电平有效。可以通过设置DM9000的20(EEDCK)引脚来改变INT的有效电平,当EEDCK拉高以后,INT低电平有效,否则的话INT是高电平有效的。开发板上R66电阻为EEDCK的上拉电阻,因此ALIENTEK的STM32F103战舰V3开发板上DM9000的INT引脚是低电平有效的,这点一定要注意到! EEDCK INT 上拉 低电平有效 下拉 高电平有效 淘宝店铺: 技术论坛:

7 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
1、DM9000 DM9000数据位宽设置 DM9000支持8位和16位两种数据位宽,可以通过DM9000的21(EEDCS)引脚设置其数据位宽,当EEDCS上拉的时候DM9000选择8位数据位宽,否则的话选择16位数据位宽。开发板上的R65电阻为EECS的上拉电阻,但是此电阻并未焊接!因此ALIENTEK的SMT32F103战舰V3开发板上的DM9000芯片的数据位宽为16位。 EEDCS 数据位宽 上拉 8位 默认 16位 淘宝店铺: 技术论坛:

8 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
2、硬件连接 查阅DM9000数据手册的话会发现其接口和SRAM十分相似,因此DM9000和开发板之间通过FSMC来连接,其中DM9000挂在BANK1的NE2上,硬件连接图如下: 淘宝店铺: 技术论坛:

9 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
3、驱动程序 文件dm9000.c和dm9000.h为DM9000的驱动文件,其中dm9000.h中有一个结构体用来记录DM9000的一些属性。 struct dm9000_config { enum DM9000_PHY_mode mode; //工作模式 u8 imr_all; //中断类型 u16 queue_packet_len; //每个数据包大小 u8 mac_addr[6]; //MAC地址 u8 multicase_addr[8]; //组播地址 }; dm9000.h中宏DM9000_PKT_MAX定义了最大接收数据包长度,这里为1536,DM9000官方给的大小是1536,但是我计算出来的最大为1526。 淘宝店铺: 技术论坛:

10 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
3、驱动程序 DM9000直接内存访问控制(DMAC) DM9000支持DMA方式简化对内部存储器的访问。在我们编程写好内部存储器地址后,就可以用一个读/写命令伪指令把当前数据加载到内部数据缓冲区,这样,内部存储器指定位置就可以被读/写命令寄存器访问。存储器地址将会自动增加,增加的大小与当前总线操作模式相同(比如:8-bit、16-bit或32-bit),接着下一个地址数据将会自动加载到内部数据缓冲区。要注意的是在连续突发式第一次访问的数据应该被忽略,因为,这个数据是最后一次读写命令的内容。 内部存储器空间大小16K字节。前3K 字节单元用作发送包的缓冲区,其他 13K 字节用作接收包的缓冲区。所以在写存储器操作时,如果地址越界(即超出 3K 空间),在 IMR 寄存器 bit7 置位的情况下,地址指针将会返回到存储器0地址处。同样,在读存储器操作时,如果地址越界(即超出16K空间),在 IMR 寄存器 bit7 置位的情况下,地址指针将会返回到存储器 0x0C00 地址处。 淘宝店铺: 技术论坛:

11 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
3、驱动程序 DM9000数据包发送 DM9000有两个发送数据包:index1 和 index2,同时存储在 TX SRAM 中。发送控制寄存器(02h)控制循环冗余校验码(CRC)和填充(pads)的插入,其状态分别记录在发送状态寄存器 I(03H)和发送状态寄存器 II(04H)中。 发送器的起始地址为 0x00H,在软件或硬件复位后,默认的数据发送包为 index1。首先,使用 DMA 端口将数据写TX SRAM 中,然后,在发送数据包长度寄存器中把数据字节数写入字节计数寄存器。置位发送控制寄存器的bit0位,则DM9000开始发送index1 数据包。在index1数据包发送结束之前,数据发送包index2被移入 TX SRAM 中。在index1数据包发送结束后,将index2数据字节数写入字节计数寄存器中,然后,置位发送控制寄存器的bit0位,则index2数据包开始发送。以此类推,后面的数据包都以此方式进行发送。 淘宝店铺: 技术论坛:

12 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
3、驱动程序 DM9000数据包接收 RX SRAM 是一个环形数据结构。在软件或硬件复位后, RX SRAM 的起始地址为0X0C00。每个接收数据包都包含有 CRC 校验域,数据域,以及紧跟其后的 4字节包头域。4字节包头格式为:01h、状态、BYTE_COUNT 低、BYTE_COUNT 高。请注意:每个接收包的起始地址处在适当的地址边界,这取决于当前总线操作模式(8bit或者16bit)。 淘宝店铺: 技术论坛:

13 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
3、驱动程序 文件dm9000.c里面一共有15个函数,如下表: 函数 描述 DM9000_Init () DM9000初始化函数。 DM9000_ReadReg () 读取DM9000指定寄存器值。 DM9000_WriteReg () 向DM9000指定寄存器中写入指定值。 DM9000_PHY_ReadReg () 读取DM9000的PHY的指定寄存器。 DM9000_PHY_WriteReg () 向DM9000的PHY寄存器写入指定值。 DM9000_Get_DeiviceID () 获取DM9000的芯片ID。 DM9000_Get_SpeedAndDuplex () 获取DM9000的连接速度和双工模式。 DM9000_Set_PHYMode () 设置DM900的PHY工作模式。 DM9000_Set_MACAddress () 设置DM9000的MAC地址。 DM9000_Set_Multicast () 设置DM9000的组播地址。 DM9000_Reset() 复位DM9000。 淘宝店铺: 技术论坛:

14 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
3、驱动程序 文件dm9000.c里面一共有15个函数,如下表: 函数 描述 DM9000_SendPacket() 通过DM9000发送数据包。 DM9000_Receive_Packet() DM9000接收数据包 DM9000_ISRHandler() 中断处理函数。 EXTI9_5_IRQHandler() 外部中断线6的中断服务函数。 淘宝店铺: 技术论坛:

15 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
谢谢您对“正点原子”团队的支持 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺: 技术论坛: 淘宝店铺: 技术论坛:


Download ppt "《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:"

Similar presentations


Ads by Google