Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions bsp/gd32/risc-v/gd32vw553h-eval/board/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,26 @@ endmenu

menu "Board extended module Drivers"

menuconfig BSP_USING_AT24C02
bool "Enable AT24C02 I2C0( SCL[PA2 : 2] SDA[PA3 : 3] )"
default n
select PKG_USING_AT24CXX
Comment on lines +111 to +114
Copy link

Copilot AI Feb 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[discrepancy_with_pr_description/与PR描述不一致]: PR description template fields appear unfilled

English: The PR description still contains the required template block and does not provide the requested verification info (BSP path, .config changes, action link) or status checkboxes. Please update the PR description so reviewers can reproduce and verify this BSP example.
中文:PR 描述中仍保留了必填模板块,且未补充要求的验证信息(BSP 路径、.config 改动、action 编译链接)以及状态勾选项。请完善 PR 描述,方便复现和验证该 BSP 示例。

Copilot uses AI. Check for mistakes.
select PKG_AT24CXX_EE_TYPE_AT24C02

if BSP_USING_AT24C02

config BSP_USING_AT24C02_UTEST
bool "Enable the utest of AT24C02"
default n
select RT_USING_UTEST
select RT_USING_ULOG
select ULOG_USING_ISR_LOG

config BSP_USING_AT24C02_INIT
bool "Init the model and check it"
default y

endif
endmenu

endmenu
Expand Down
6 changes: 6 additions & 0 deletions bsp/gd32/risc-v/gd32vw553h-eval/board/SConscript
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,10 @@ if rtconfig.PLATFORM in ['gcc']:
CPPDEFINES = ['GD32VW553H_EVAL']
group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES)

list = os.listdir(cwd)
for item in list:
if os.path.isfile(os.path.join(cwd, item, 'SConscript')):
group = group + SConscript(os.path.join(item, 'SConscript'))


Return('group')
6 changes: 6 additions & 0 deletions bsp/gd32/risc-v/gd32vw553h-eval/board/linker_scripts/link.lds
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,12 @@ SECTIONS
__rt_init_end = .;
. = ALIGN(4);

/* section information for utest */
. = ALIGN(4);
__rt_utest_tc_tab_start = .;
KEEP(*(UtestTcTab))
__rt_utest_tc_tab_end = .;

/* section information for modules */
. = ALIGN(4);
__rtmsymtab_start = .;
Expand Down
28 changes: 28 additions & 0 deletions bsp/gd32/risc-v/gd32vw553h-eval/board/port/SConscript
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import os
from building import *

objs = []
cwd = GetCurrentDir()

# add general drivers
src = []
path = [cwd]

if GetDepend(['BSP_USING_AT24C02']):
path += [cwd + "/at24c02"]

if GetDepend(['BSP_USING_AT24C02_UTEST']):
src += ["./at24c02/test_at24c02.c"]

if GetDepend(['BSP_USING_AT24C02_INIT']):
src += ['./at24c02/at24c02.c']

CPPDEFINES = ['GD32VW553H_EVAL']
group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES)

list = os.listdir(cwd)
for item in list:
if os.path.isfile(os.path.join(cwd, item, 'SConscript')):
group = group + SConscript(os.path.join(item, 'SConscript'))

Return('group')
35 changes: 35 additions & 0 deletions bsp/gd32/risc-v/gd32vw553h-eval/board/port/at24c02/at24c02.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#include "rtconfig.h"

#ifdef BSP_USING_AT24C02_INIT

#include "at24c02.h"

at24cxx_device_t gd32_at24c02 = RT_NULL;

static int init_gd32_at24c02(void)
{
rt_err_t result = RT_EOK;

gd32_at24c02 = at24cxx_init(AT24C02_I2C_NAME, AT24C02_ADDR_INPUT);

if (gd32_at24c02 == RT_NULL)
{
rt_kprintf("AT24C02 initialization failed\n");
return RT_ERROR;
}

result = at24cxx_check(gd32_at24c02);

if (result == RT_ERROR)
{
rt_kprintf("AT24C02 check failed\n");
return RT_ERROR;
}

return RT_EOK;
}


INIT_DEVICE_EXPORT(init_gd32_at24c02);

#endif
12 changes: 12 additions & 0 deletions bsp/gd32/risc-v/gd32vw553h-eval/board/port/at24c02/at24c02.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#ifndef AT24C02_H
#define AT24C02_H

#include <rtthread.h>
#include "at24cxx.h"

#define AT24C02_I2C_NAME "i2c0"
#define AT24C02_ADDR_INPUT 0x0

extern at24cxx_device_t gd32_at24c02;

#endif // AT24C02_H
89 changes: 89 additions & 0 deletions bsp/gd32/risc-v/gd32vw553h-eval/board/port/at24c02/test_at24c02.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
#include "rtconfig.h"

#ifdef BSP_USING_AT24C02

#include "utest.h"
#include "at24c02.h"

#define TEST_DATA "WELCOME TO RTT"

static at24cxx_device_t dev = RT_NULL;

static rt_err_t test_at24c02_init(void)
{
rt_err_t result = RT_EOK;
uint8_t AddrInput = 0x0;

dev = at24cxx_init(AT24C02_I2C_NAME, AddrInput);
if (dev == RT_NULL)
{
LOG_E("AT24C02 initialization failed\n");
result = RT_ERROR;
}

return result;
}

static void test_at24c02_example(void)
{
uint8_t write_buffer[] = TEST_DATA;
int data_size = sizeof(write_buffer);
rt_err_t result = RT_EOK;

uint8_t read_buffer[50] = {0};

/* 写入数据 */
result = at24cxx_write(dev, 0, write_buffer, data_size);

if (result != RT_EOK)
{
LOG_E("Failed to write data to AT24C02\n");
uassert_true(RT_FALSE);
return;
}

LOG_I("Successfully wrote to AT24C02: %s\n", write_buffer);

/* 读取数据 */
result = at24cxx_read(dev, 0, read_buffer, data_size);

if (result != RT_EOK)
{
LOG_E("Failed to read data from AT24C02\n");
uassert_true(RT_FALSE);
return;
}

LOG_I("Successfully read from AT24C02: %s\n", read_buffer);

uassert_str_equal(write_buffer, read_buffer);

/* 检查数据 */
result = at24cxx_check(dev);

uassert_true(result == RT_EOK);

return;
}

static rt_err_t test_at24c02_deinit(void)
{

if (dev != RT_NULL)
{
at24cxx_deinit(dev);
dev = RT_NULL;
return RT_EOK;
}

return RT_ERROR;
}

static void test_case(void)
{
UTEST_UNIT_RUN(test_at24c02_example);
}

UTEST_TC_EXPORT(test_case, "bsp.gd32.port.at24c02" , test_at24c02_init, test_at24c02_deinit, 100);

#endif
Loading