返回列表 发新帖我要提问本帖赏金: 40.00元(功能说明)

[开发工具] 如何使用 F460 RT-Thread bsp 读写 EEPROM?

[复制链接]
 楼主| yang377156216 发表于 2023-8-9 18:31 | 显示全部楼层 |阅读模式
#申请原创# @21小跑堂

    本文以RT-Thread官网的AN0003 RT-Thread应用笔记之I2C设备应用指南为依据,在小华 ev_hc32f460_lqfp100_v2 开发板上进行相应实验。需要准备的开发环境以及工具有:
  • IDE :Keil MDK 5.2X
  • 硬件平台 :ev_hc32f460_lqfp100_v2 开发板
  • Env tool :env_released_x_x_x
  • 调试工具 :micro usb 数据线



搭建 RT-Thread Env 环境
    由于接下来需要使用 Env tool 去构建 rt-thread 的 bsp 工程,所以首先需要搭建好相应的环境,具体步骤在此不详细描述,可以参阅笔者之前写过的一篇文章:
    https://bbs.21ic.com/icview-3253214-1-1.html


获取并构建 F460 RT-Thread BSP 示例工程
    由于小华官方已经适配好了 F460 的 RT-Thread bsp 包,用户只需要从 rt-thread GitHub 主仓(https://github.com/RT-Thread/rt-thread )获取到源码,然后进入到 bsp\hc32\ev_hc32f460_lqfp100_v2 目录中右击,选择 ConEmu Here,打开 Env 工具,在 Env 命令行中输入命令: scons --dist ,回车后等待片刻即会打包 bsp 示例工程,如下图所示:
1. scons --dist 打包bsp独立工程.jpg
    此时在目录下会自动生成一个dist文件夹,里面包含了工程文件夹和压缩包,此 bsp project 示例工程即可拷贝到任意目录下使用。


配置工程
    在上面得到的示例工程目录下右击,选择 ConEmu Here,打开 Env 工具。在 Env 命令行中输入 menuconfig,按 enter 键进入配置界面,使用 menuconfig 工具配置工程,主要需要添加 I2C 驱动以及 at24cxx 在线驱动包:
模拟 I2C 驱动配置 .jpg
    按照上面选择所示即可添加好模拟 I2C 相关的配置,这里要注意,每一项配置都得先保存再按退出,另外引脚 PIN 号计算公式为 :
PIN 号 = (端口号-1)* 16 + PIN_No
   这里的端口号表示 PA/PB/PC/PD/PE 对应为 1/2/3/4/5 ,PIN_No 表示 PA05 中的 5,以 PE15 为例, PIN 号 = (5 - 1)*16 + 15 = 79 。PB05 以及其它 IO 以此类推。
at24cxx 驱动配置 .jpg
    按照上面选择步骤所示即可添加好 at24cxx 在线的驱动包,这是 rt-thread 官方组件包中的资源,可以用于驱动 demo 板上的 BL24C256 EEPROM 器件。由于选择了在线资源包,需要使用命令 : pkgs --update ,作用是将对应的源文件下载到本地对应目录中。
pkgs --update ok.jpg
    接下来就可以重新生成对应的 Keil 工程了,使用命令 : scons --target=mdk5 -s ,生成的工程文件为根目录下的 project.uvprojx 。
打开工程添加应用代码
    为了实现读写板载 BL24C256 EEPROM 芯片的功能,需要自己添加操作流程代码,以及修改 at24cxx.h 文件中的配置,main.c 具体如下:
  1. /*
  2. * Copyright (c) 2006-2022, RT-Thread Development Team
  3. * Copyright (c) 2022, Xiaohua Semiconductor Co., Ltd.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0
  6. *
  7. * Change Logs:
  8. * Date           Author       Notes
  9. * 2022-04-28     CDT          first version
  10. */

  11. #include <rtthread.h>
  12. #include <rtdevice.h>
  13. #include <board.h>

  14. #include "at24cxx.h"

  15. /* defined the LED_GREEN pin: PD4 */
  16. #define LED_GREEN_PIN GET_PIN(D, 4)

  17. at24cxx_device_t at24c256_dev;

  18. int main(void)
  19. {
  20.     rt_uint8_t WriteBuff[100];
  21.     rt_uint8_t ReadBuff[100];

  22.     /* set LED_GREEN_PIN pin mode to output */
  23.     rt_pin_mode(LED_GREEN_PIN, PIN_MODE_OUTPUT);

  24.     /* at24c256 device init */
  25.     //第一个参数需要填drv_soft_i2c.h 里配置的 i2c bus号,第二个参数需要与开发板上的地址对应起来
  26.     at24c256_dev = at24cxx_init("i2c2", 0);//at24cxx_init("i2c2", (0xA0 >> 1));
  27.    
  28.     for (rt_uint8_t i = 0; i < 50; i++)
  29.     {
  30.         WriteBuff[i] = i + 1;
  31.     }
  32.     at24cxx_write(at24c256_dev, 0, WriteBuff, 50);
  33.     rt_thread_mdelay(100);
  34.     at24cxx_read(at24c256_dev, 0, ReadBuff, 50);
  35.     rt_kprintf("\r\n read:");
  36.     for (rt_uint8_t j = 0; j < 50; j++)
  37.     {
  38.         rt_kprintf("%d - ", ReadBuff[j]);
  39.     }
  40.     rt_kprintf("\r\n at24c256 test ok!");

  41.     while (1)
  42.     {
  43.         rt_pin_write(LED_GREEN_PIN, PIN_HIGH);
  44.         rt_thread_mdelay(500);
  45.         rt_pin_write(LED_GREEN_PIN, PIN_LOW);
  46.         rt_thread_mdelay(500);
  47.     }
  48. }
    at24cxx.h 修改如下:
  1. #define AT24C01     0
  2. #define AT24C02     1
  3. #define AT24C04     2
  4. #define AT24C08     3
  5. #define AT24C16     4
  6. #define AT24C32     5
  7. #define AT24C64     6
  8. #define AT24C128    7
  9. #define AT24C256    8
  10. #define AT24C512    9
  11. #define AT24CTYPE   10   // Number of supported types

  12. #define EE_TWR      5

  13. #ifndef EE_TYPE
  14. #define EE_TYPE     AT24C256
  15. #endif
keil 工程ok.jpg
测试验证
    编译代码并下载成功后,飞线将 PE06/PB09 连接到板载 CMSIS-Dap 端的 RX/TX 即可使用调试器枚举出的虚拟串口,开启串口工具以及抓取 PB05/PE15 对应的模拟 I2C 波形,正常会显示如下:

串口显示ok.jpg
I2C 时序波形 ok.jpg
   
    这里在放个官方的 AN ,指导我们更加熟悉 rt-thread bsp 的使用。


AN_HC32F4A0系列的RT_Thread BSP制作和移植.zip (1.15 MB, 下载次数: 13)

打赏榜单

21小跑堂 打赏了 40.00 元 2023-08-15
理由:恭喜通过原创审核!期待您更多的原创作品~

评论

在rt-thread 的晚上开发生态加持下,在RT-Thread下依托HC32F460读写BL24C256 EEPROM 器件。  发表于 2023-8-15 10:48
yangxiaor520 发表于 2023-8-9 19:11 来自手机 | 显示全部楼层
RTTread操作系统现在应用挺广泛
jlyuan 发表于 2023-8-15 21:03 | 显示全部楼层
这么容易就40大洋了
 楼主| yang377156216 发表于 2023-8-21 11:30 | 显示全部楼层
jlyuan 发表于 2023-8-15 21:03
这么容易就40大洋了

是呀,行动起来吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

239

帖子

13

粉丝
快速回复 在线客服 返回列表 返回顶部