这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
icore4t_40 [2020/09/30 16:57] fmj 创建 |
icore4t_40 [2022/04/01 10:53] (当前版本) sean |
||
---|---|---|---|
行 2: | 行 2: | ||
|技术支持电话|**0379-69926675-801**||| | |技术支持电话|**0379-69926675-801**||| | ||
|技术支持邮件|Gingko@vip.163.com||| | |技术支持邮件|Gingko@vip.163.com||| | ||
- | |技术论坛|http://www.eeschool.org||| | ||
^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ||
| V1.0 | 2020-9-30 | fmj | 初次建立 | | | V1.0 | 2020-9-30 | fmj | 初次建立 | | ||
行 8: | 行 7: | ||
- | ===== TM32CubeMX教程三十九——LWIP_TCP_CLIENT输出实验 ===== | + | \\ |
+ | \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | ===== STM32CubeMX教程四十——LWIP_TCP_SERVER以太网数据传输 ===== | ||
1. 在主界面选择File-->New Project或者直接点击ACCEE TO MCU SELECTOR | 1. 在主界面选择File-->New Project或者直接点击ACCEE TO MCU SELECTOR | ||
- | {{ :icore4t:icore4t_cube_39_1.jpg?direct |}} | + | {{ :icore4t:icore4t_cube_40_1.png?direct |}} |
2. 出现芯片型号选择,搜索自己芯片的型号,双击型号,或者点击Start Project进入配置在搜索栏的下面,提供的各种查找方式,可以选择芯片内核,型号,等等,可以帮助你查找芯片。本实验选取的芯片型号为:STM32H750IBKx。 | 2. 出现芯片型号选择,搜索自己芯片的型号,双击型号,或者点击Start Project进入配置在搜索栏的下面,提供的各种查找方式,可以选择芯片内核,型号,等等,可以帮助你查找芯片。本实验选取的芯片型号为:STM32H750IBKx。 | ||
- | {{ :icore4t:icore4t_cube_39_2.jpg?direct |}} | + | {{ :icore4t:icore4t_cube_40_2.png?direct |}} |
3. 配置RCC,使用外部时钟源 | 3. 配置RCC,使用外部时钟源 | ||
- | {{ :icore4t:icore4t_cube_39_3.jpg?direct |}} | + | {{ :icore4t:icore4t_cube_40_3.png?direct |}} |
4. 配置调试引脚 | 4. 配置调试引脚 | ||
- | {{ :icore4t:icore4t_cube_39_4.jpg?direct |}} | + | {{ :icore4t:icore4t_cube_40_4.png?direct |}} |
5. 将PA10,PB7,PB8设置为GPIO_Output | 5. 将PA10,PB7,PB8设置为GPIO_Output | ||
- | {{ :icore4t:icore4t_cube_39_5.jpg?direct |}} | + | {{ :icore4t:icore4t_cube_40_5.png?direct |}} |
6. 引脚模式配置 | 6. 引脚模式配置 | ||
- | {{ :icore4t:icore4t_cube_39_6.jpg?direct |}} | + | {{ :icore4t:icore4t_cube_40_6.png?direct |}} |
- | {{ :icore4t:icore4t_cube_39_7.jpg?direct |}} | + | {{ :icore4t:icore4t_cube_40_7.png?direct |}} |
7. 配置以太网 | 7. 配置以太网 | ||
- | {{ :icore4t:icore4t_cube_39_8.jpg?direct |}} | + | {{ :icore4t:icore4t_cube_40_8.png?direct |}} |
- | {{ :icore4t:icore4t_cube_39_9.jpg?direct |}} | + | {{ :icore4t:icore4t_cube_40_9.png?direct |}} |
- | {{ :icore4t:icore4t_cube_39_10.jpg?direct |}} | + | {{ :icore4t:icore4t_cube_40_10.png?direct |}} |
- | {{ :icore4t:icore4t_cube_39_11.jpg?direct |}} | + | {{ :icore4t:icore4t_cube_40_11.png?direct |}} |
8. 时钟设置,选择外部高速时钟源,配置为最大主频 | 8. 时钟设置,选择外部高速时钟源,配置为最大主频 | ||
- | {{ :icore4t:icore4t_cube_39_12.jpg?direct |}} | + | {{ :icore4t:icore4t_cube_40_12.png?direct |}} |
9. 工程文件的设置, 这里就是工程的各种配置 我们只用到有限几个,其他的默认即可 IDE我们使用的是 MDK5.27 | 9. 工程文件的设置, 这里就是工程的各种配置 我们只用到有限几个,其他的默认即可 IDE我们使用的是 MDK5.27 | ||
- | {{ :icore4t:icore4t_cube_39_13.jpg?direct |}} | + | {{ :icore4t:icore4t_cube_40_13.png?direct |}} |
10. 点击Code Generator,进行进一步配置 | 10. 点击Code Generator,进行进一步配置 | ||
- | {{ :icore4t:icore4t_cube_39_14.jpg?direct |}} | + | {{ :icore4t:icore4t_cube_40_14.png?direct |}} |
* **Copy all used libraries into the project folder** | * **Copy all used libraries into the project folder** | ||
* 将HAL库的所有.C和.H都复制到所建工程中 | * 将HAL库的所有.C和.H都复制到所建工程中 | ||
行 49: | 行 53: | ||
* 自行选择方式即可 | * 自行选择方式即可 | ||
11. 然后点击GENERATE CODE 创建工程 | 11. 然后点击GENERATE CODE 创建工程 | ||
- | {{ :icore4t:icore4t_cube_39_15.jpg?direct |}} | + | {{ :icore4t:icore4t_cube_40_15.png?direct |}} |
创建成功,打开工程。 | 创建成功,打开工程。 | ||
\\ | \\ | ||
行 81: | 行 85: | ||
* BSD API提供了基于open-read-write-close模型的UNIX标准API,它的最大特点是使应用程序移植到其它系统时比较容易,但用在嵌入式系统中效率比较低,占用资源多。这对于我们的嵌入式应用有时是不能容忍的。 | * BSD API提供了基于open-read-write-close模型的UNIX标准API,它的最大特点是使应用程序移植到其它系统时比较容易,但用在嵌入式系统中效率比较低,占用资源多。这对于我们的嵌入式应用有时是不能容忍的。 | ||
* 其主要特性如下: | * 其主要特性如下: | ||
- | (1) 支持多网络接口下的IP转发; | + | - 支持多网络接口下的IP转发; |
- | (2) 支持ICMP协议; | + | - 支持ICMP协议; |
- | (3) 包括实验性扩展的UDP(用户数据报协议); | + | - 包括实验性扩展的UDP(用户数据报协议); |
- | (4) 包括阻塞控制、RTT 估算、快速恢复和快速转发的TCP(传输控制协议); | + | - 包括阻塞控制、RTT 估算、快速恢复和快速转发的TCP(传输控制协议); |
- | (5) 提供专门的内部回调接口(Raw API),用于提高应用程序性能; | + | - 提供专门的内部回调接口(Raw API),用于提高应用程序性能; |
- | (6) 可选择的Berkeley接口API (在多线程情况下使用) ; | + | - 可选择的Berkeley接口API (在多线程情况下使用) ; |
- | (7) 在最新的版本中支持ppp; | + | - 在最新的版本中支持ppp; |
- | (8) 新版本中增加了的IP fragment的支持; | + | - 新版本中增加了的IP fragment的支持; |
- | (9) 支持DHCP协议,动态分配ip地址。 | + | - 支持DHCP协议,动态分配ip地址。 |
行 140: | 行 144: | ||
* iCore4T带有LAN8720A嵌入式以太网控制器,本实验实现TCP客户端功能。以PC作为服务器,iCore4T作为客户端,PC的IP地址192.168.0.1,端口号为60001,iCore4T的IP地址为192.168.0.10,端口随机。当客户端连接到服务器,TCP建立成功即可进行数据信息传输。实验原理图如下 | * iCore4T带有LAN8720A嵌入式以太网控制器,本实验实现TCP客户端功能。以PC作为服务器,iCore4T作为客户端,PC的IP地址192.168.0.1,端口号为60001,iCore4T的IP地址为192.168.0.10,端口随机。当客户端连接到服务器,TCP建立成功即可进行数据信息传输。实验原理图如下 | ||
- | {{ :icore4t:icore4t_arm_hal_40_3.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_40_4.png?direct |}} |
==== 四、 实验程序 ==== | ==== 四、 实验程序 ==== | ||
行 239: | 行 243: | ||
- 也可以进入Debug 模式,单步运行或设置断点验证程序逻辑。 | - 也可以进入Debug 模式,单步运行或设置断点验证程序逻辑。 | ||
- | - 注:STM32H750 ETH默认使用DMA功能。但是DTCM虽然和其他的MCU和RAM起始地址一样,却无法被DMA访问。也就是通用RAM的地址变了,但是编译器还是会把DTCM的地址作为通用RAM的起始地址。请将内存起始地址修改为D1域,操作步骤如图所示,也就是在RAM2上打勾。 | + | * 注:STM32H750 ETH默认使用DMA功能。但是DTCM虽然和其他的MCU和RAM起始地址一样,却无法被DMA访问。也就是通用RAM的地址变了,但是编译器还是会把DTCM的地址作为通用RAM的起始地址。请将内存起始地址修改为D1域,操作步骤如图所示,也就是在RAM2上打勾。 |
- | {{ :icore4t:icore4t_arm_hal_40_4.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_40_5.png?direct |}} |
==== 六、 实验现象 ==== | ==== 六、 实验现象 ==== | ||
* 在发送区编辑完要发送的数据信息后,点击发送即可收到发送的数据包。如图所示: | * 在发送区编辑完要发送的数据信息后,点击发送即可收到发送的数据包。如图所示: | ||
- | {{ :icore4t:icore4t_arm_hal_40_5.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_40_6.png?direct |}} |
==== 附录1:电脑IP设置 ==== | ==== 附录1:电脑IP设置 ==== | ||
* 打开控制面板->网络和 Internet->网络和共享中心->更改适配器设置->以太网属性 | * 打开控制面板->网络和 Internet->网络和共享中心->更改适配器设置->以太网属性 | ||
- | {{ :icore4t:icore4t_arm_hal_40_6.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_40_7.png?direct |}} |
* Internet协议版本4,选择使用下面的IP地址,然后更改IP地址和默认网关 | * Internet协议版本4,选择使用下面的IP地址,然后更改IP地址和默认网关 | ||
- | {{ :icore4t:icore4t_arm_hal_40_7.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_40_8.png?direct |}} |
==== 附录2 ==== | ==== 附录2 ==== | ||
* 1、TCP&UDP测试工具安装 | * 1、TCP&UDP测试工具安装 | ||
行 257: | 行 261: | ||
* 2、TCP&UDP测试工具的使用 | * 2、TCP&UDP测试工具的使用 | ||
* (1)打开测试工具,点击创建连接,弹出设置端口的窗口,如下图设置 | * (1)打开测试工具,点击创建连接,弹出设置端口的窗口,如下图设置 | ||
- | {{ :icore4t:icore4t_arm_hal_40_8.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_40_9.png?direct |}} |
* (2)客户端已经创建完成(如下图),点击连接。 | * (2)客户端已经创建完成(如下图),点击连接。 | ||
- | {{ :icore4t:icore4t_arm_hal_40_9.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_40_10.png?direct |}} |
* (3)iCore4T服务器自动连接服务器,即可通信。(若连接不成功,请关闭电脑防火墙) | * (3)iCore4T服务器自动连接服务器,即可通信。(若连接不成功,请关闭电脑防火墙) | ||