• 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
返回

电子发烧友 电子发烧友

  • 全文搜索
    • 全文搜索
    • 标题搜索
  • 全部时间
    • 全部时间
    • 1小时内
    • 1天内
    • 1周内
    • 1个月内
  • 默认排序
    • 默认排序
    • 按时间排序
  • 全部板块
    • 全部板块
大家还在搜
  • 【瑞萨FPB-RA6E2试用】基于瑞萨FPB-RA6E2,在Windows环境的Zephyr-RTOS安装教程

    基于瑞萨FPB-RA6E2,Zephyr-Windows系统安装教程 Zephyr官方文档:https://docs.zephyrproject.org/latest/develop/getting_started/index.html#select-and-update-os GitHub地址:https://github.com/zephyrproject-rtos/zephyr 1. PowerShell中如何判断是否是管理员 if (([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { \"管理员\" } else { \"非管理员\" } 使用Windows PowerShell. 2. 创建根目录 cd D:\\\\Zephyr 创建虚拟环境 python -m venv zephyrproject\\\\.venv 3. 激活虚拟环境 cd D:\\\\Zephyr zephyrproject\\\\.venv\\\\Scripts\\\\Activate.ps1 pip install west cd D:\\\\Zephyr\\\\zephyrproject Remove-Item -Recurse -Force .west 4. 初始化安装 west init -m https://github.com/zephyrproject-rtos/zephyr --mr main west update 5. 导出 Zephyr CMake 包 。这样 CMake 就可以自动加载构建 Zephyr 应用程序所需的样板代码。 west zephyr-export 输出日志: (.venv) PS D:\\\\Zephyr\\\\zephyrproject> west zephyr-export Zephyr (D:/Zephyr/zephyrproject/zephyr/share/zephyr-package/cmake) has been added to the user package registry in: HKEY_CURRENT_USER\\\\Software\\\\Kitware\\\\CMake\\\\Packages\\\\Zephyr ZephyrUnittest (D:/Zephyr/zephyrproject/zephyr/share/zephyrunittest-package/cmake) has been added to the user package registry in: HKEY_CURRENT_USER\\\\Software\\\\Kitware\\\\CMake\\\\Packages\\\\ZephyrUnittest (.venv) PS D:\\\\Zephyr\\\\zephyrproject> 6. 使用 west packages 安装 Python 依赖项。 python -m pip install @((west packages pip) -split \' \') 7. 使用 west sdk install 安装 Zephyr SDK。 cd D:\\\\Zephyr\\\\zephyrproject\\\\zephyr west sdk install 7.1 报错(调用Github次数太多,被限制) (.venv) PS D:\\\\Zephyr\\\\zephyrproject\\\\zephyr> > > west sdk install > > Found \'D:\\\\Zephyr\\\\zephyrproject\\\\zephyr\\\\SDK_VERSION\', installing version 0.17.4. > > Fetching Zephyr SDK list... > > fetch_releases API rate limit exceeded. Try executing install script with --personal-access-token argument or use a .netrc file > > Traceback (most recent call last): > > File \"<frozen runpy>\", line 198, in _run_module_as_main > > File \"<frozen runpy>\", line 88, in _run_code File \"D:\\\\Zephyr\\\\zephyrproject\\\\.venv\\\\Scripts\\\\west.exe\\\\__main__.py\", line 7, in <module> > > File \"D:\\\\Zephyr\\\\zephyrproject\\\\.venv\\\\Lib\\\\site-packages\\\\west\\\\app\\\\main.py\", line 1199, in main > > app.run(argv or sys.argv[1:]) > > File \"D:\\\\Zephyr\\\\zephyrproject\\\\.venv\\\\Lib\\\\site-packages\\\\west\\\\app\\\\main.py\", line 278, in run > > self.run_command(argv, early_args) > > File \"D:\\\\Zephyr\\\\zephyrproject\\\\.venv\\\\Lib\\\\site-packages\\\\west\\\\app\\\\main.py\", line 584, in run_command > > self.run_extension(args.command, argv) > > File \"D:\\\\Zephyr\\\\zephyrproject\\\\.venv\\\\Lib\\\\site-packages\\\\west\\\\app\\\\main.py\", line 739, in run_extension > > self.cmd.run(args, unknown, self.topdir, manifest=self.manifest, > > File \"D:\\\\Zephyr\\\\zephyrproject\\\\.venv\\\\Lib\\\\site-packages\\\\west\\\\commands.py\", line 200, in run > > self.do_run(args, unknown) > > File \"D:\\\\Zephyr\\\\zephyrproject\\\\zephyr\\\\scripts\\\\west_commands\\\\sdk.py\", line 617, in do_run > > self.install_sdk(args, user_args) > > File \"D:\\\\Zephyr\\\\zephyrproject\\\\zephyr\\\\scripts\\\\west_commands\\\\sdk.py\", line 440, in install_sdk > > releases = self.fetch_releases(args.api_url, req_headers) > > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > File \"D:\\\\Zephyr\\\\zephyrproject\\\\zephyr\\\\scripts\\\\west_commands\\\\sdk.py\", line 253, in fetch_releases > > raise Exception(f\"Failed to fetch: {resp.status_code}, {resp.text}\") > > Exception: Failed to fetch: 403, {\"message\":\"API rate limit exceeded for 13.208.168.179. (But here\'s the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)\",\"documentation_url\":\"https://docs.github.com/rest/overview/resources-in-the-rest-api#rate-limiting\"} (.venv) PS D:\\\\Zephyr\\\\zephyrproject\\\\zephyr> 7.2 使用Token方式修复(替换自己的Github token哈) (调用Github次数太多,被限制) 这里大家申请自己的Github token哈,替换成自己申请的token哦~ # 制定安装目录,安装到 D:\\\\Zephyr\\\\ west sdk install -d D:\\\\Zephyr\\\\zephyr-sdk --personal-access-token ghp_rTUYD8xxxxxx12 # 以下是:默认安装位置 west sdk install --personal-access-token YOUR_TOKEN_HERE west sdk install --personal-access-token ghp_rTUYJMD8MVeabhwDjiSMgqfG1yaB2kuD4N 日志: (.venv) PS D:\\\\Zephyr\\\\zephyrproject\\\\zephyr> west sdk install --personal-access-token ghp_rTUYD8MVeaFObhjiSMgqfG1yaB2kuD4N Found \'D:\\\\Zephyr\\\\zephyrproject\\\\zephyr\\\\SDK_VERSION\', installing version 0.17.4. Fetching Zephyr SDK list... Fetching sha256... Downloading https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.17.4/zephyr-sdk-0.17.4_windows-x86_64_minimal.7z... zephyr-sdk-0.17.4_windows-x86_64_minimal.7z: 100%|#######################################|4.71k ?/s[00:00] Downloaded: C:\\\\Users\\\\Administrator\\\\tmp52qfbi5y\\\\zephyr-sdk-0.17.4_windows-x86_64_minimal.7z Extract: C:\\\\Users\\\\Administrator\\\\tmp52qfbi5y\\\\zephyr-sdk-0.17.4_windows-x86_64_minimal.7z INFO patool: Extracting C:\\\\Users\\\\Administrator\\\\tmp52qfbi5y\\\\zephyr-sdk-0.17.4_windows-x86_64_minimal.7z ... INFO patool: could not find a \'file\' executable, falling back to guess mime type by file extension INFO patool: running C:\\\\ProgramData\\\\chocolatey\\\\bin\\\\7z.EXE x -aou -oC:\\\\Users\\\\Administrator\\\\tmp52qfbi5y -- C:\\\\Users\\\\Administrator\\\\tmp52qfbi5y\\\\zephyr-sdk-0.17.4_windows-x86_64_minimal.7z INFO patool: ... C:\\\\Users\\\\Administrator\\\\tmp52qfbi5y\\\\zephyr-sdk-0.17.4_windows-x86_64_minimal.7z extracted to `C:\\\\Users\\\\Administrator\\\\tmp52qfbi5y\'. Move: C:\\\\Users\\\\Administrator\\\\tmp52qfbi5y\\\\zephyr-sdk-0.17.4 to C:\\\\Users\\\\Administrator\\\\zephyr-sdk-0.17.4. Zephyr SDK 0.17.4 Setup Registering Zephyr SDK CMake package ... Zephyr-sdk (C:/Users/Administrator/zephyr-sdk-0.17.4/cmake) has been added to the user package registry in: HKEY_CURRENT_USER\\\\Software\\\\Kitware\\\\CMake\\\\Packages\\\\Zephyr-sdk All done. Zephyr SDK 0.17.4 Setup Installing \'aarch64-zephyr-elf\' toolchain ... 8. 工具链安安装 west sdk install --personal-access-token ghp_rTUYD8MVeaFObhjiSMgqfG1yaB2kuD4N 8.1 报错日志: Folders: 259 Files: 2066 Size: 331222996 Compressed: 47528429 Installing \'arc-zephyr-elf\' toolchain ... ERROR: Toolchain download failed FATAL ERROR: command \"C:\\\\Users\\\\Administrator\\\\zephyr-sdk-0.17.4\\\\setup.cmd /t all /h\" failed (.venv) PS D:\\\\Zephyr\\\\zephyrproject\\\\zephyr> 8.2 修复: 只安装 ARM 工具链(RA6E2 所需) west sdk install --toolchain arm-zephyr-eabi --personal-access-token ghp_rTUYJMD8MVeaFbhwDjiSMgqfG1yaB2kuD4N 注:arm-zephyr-eabi专为 ARM 架构的嵌入式设备(Cortex-M / Cortex-R) 编译 Zephyr 应用。 支持所有 ARMv6-M、ARMv7-M、ARMv8-M 架构的处理器。 成功日志: (.venv) PS D:\\\\Zephyr\\\\zephyrproject\\\\zephyr> west sdk install --toolchain arm-zephyr-eabi --personal-access-token ghp_rTUYJMD8MVeObhwDjiSMgqfG1yaB2kuD4N Found \'D:\\\\Zephyr\\\\zephyrproject\\\\zephyr\\\\SDK_VERSION\', installing version 0.17.4. Fetching Zephyr SDK list... Zephyr SDK version 0.17.4 is already installed at C:\\\\Users\\\\Administrator\\\\zephyr-sdk-0.17.4. Using it. Zephyr SDK 0.17.4 Setup Registering Zephyr SDK CMake package ... Zephyr-sdk (C:/Users/Administrator/zephyr-sdk-0.17.4/cmake) has been added to the user package registry in: HKEY_CURRENT_USER\\\\Software\\\\Kitware\\\\CMake\\\\Packages\\\\Zephyr-sdk All done. Zephyr SDK 0.17.4 Setup Installing \'arm-zephyr-eabi\' toolchain ... toolchain_windows-x86_64_arm- 100%[=================================================>]81.87M1.12MB/s in 2m 44s 7-Zip 25.01 (x64) : Copyright (c) 1999-2025 Igor Pavlov : 2025-08-03 Scanning the drive for archives: 1 file, 85844046 bytes (82 MiB) Extracting archive: toolchain_windows-x86_64_arm-zephyr-eabi.7z --------------------------------------------------------------- Path = toolchain_windows-x86_64_arm-zephyr-eabi.7z Type = 7z Physical Size = 85844046 Headers Size = 36310 Method = LZMA2:24 BCJ Solid = + Blocks = 2 Everything is Ok Folders: 521 Files: 4355 Size: 1162592180 Compressed: 85844046 Installing host tools ... SKIPPED: Windows host tools are not available yet. All done. 9. 可用于获取 Zephyr 支持的所有开发板列表。 west boards 9.1 搜索方法1 west boards | Where-Object { $_ -like \"*关键词*\" } (.venv) PS D:\\\\Zephyr\\\\zephyrproject\\\\zephyr> west boards | Where-Object { $_ -like \"*fpb*\" } fpb_ra4e1 fpb_ra6e1 fpb_ra6e2 fpb_rx261 9.2 搜索方法2:忽略大小写 west boards | Select-String -Pattern \"RA6E2\" -CaseSensitive:$false (.venv) PS D:\\\\Zephyr\\\\zephyrproject\\\\zephyr> > > west boards | Select-String -Pattern \"RA6E2\" -CaseSensitive:$false ek_ra6e2 fpb_ra6e2 10. 列举支持的开发板数量 (.venv) PS D:\\\\Zephyr\\\\zephyrproject\\\\zephyr> (west boards | Measure-Object).Count 921 west build -p always -b <your-board-name> samples\\\\basic\\\\blinky -p always 选项强制执行全新构建,建议新用户使用。 -b <your-board-name>替换你的开发板名称。 至此,Zephyr 安装完成。 11. 查看 Zephyr 仓库版本 11.1 查看git版本 git -C zephyr describe --tags git -C zephyr describe --tags --abbrev=0 输出: PS D:\\\\Zephyr\\\\zephyrproject> git -C zephyr describe --tags v4.3.0-2928-g23354f3cad3 11.2 查看 West:版本 PS D:\\\\Zephyr> zephyrproject\\\\.venv\\\\Scripts\\\\Activate.ps1 (.venv) PS D:\\\\Zephyr> west --version West version: v1.5.0 11.3 当前 Zephyr SDK 版本: Found \'D:\\\\Zephyr\\\\zephyrproject\\\\zephyr\\\\SDK_VERSION\', installing version 0.17.4. 在PowerShell中输出:type D:\\\\Zephyr\\\\zephyrproject\\\\zephyr\\\\SDK_VERSION 11.4 查看当前用户 (.venv) PS D:\\\\Zephyr\\\\zephyrproject\\\\zephyr> whoami desktop-cbifivc\\\\administrator 12. 构建 Blinky 样例 (.venv) PS D:\\\\Zephyr\\\\zephyrproject\\\\zephyr> west build -p always -b fpb_ra6e2 samples\\\\basic\\\\blinky 日志输出: (.venv) PS D:\\\\Zephyr\\\\zephyrproject\\\\zephyr> west build -p always -b fpb_ra6e2 samples\\\\basic\\\\blinky -- west build: generating a build system Loading Zephyr default modules (Zephyr base). -- Application: D:/Zephyr/zephyrproject/zephyr/samples/basic/blinky -- CMake version: 4.2.1 -- Found Python3: D:/Zephyr/zephyrproject/.venv/Scripts/python.exe (found suitable version \"3.11.9\", minimum required is \"3.10\") found components: Interpreter -- Cache files will be written to: D:/Zephyr/zephyrproject/zephyr/.cache -- Zephyr version: 4.3.99 (D:/Zephyr/zephyrproject/zephyr) -- Found west (found suitable version \"1.5.0\", minimum required is \"0.14.0\") -- Board: fpb_ra6e2, qualifiers: r7fa6e2bb3cfm -- ZEPHYR_TOOLCHAIN_VARIANT not set, trying to locate Zephyr SDK -- Found host-tools: zephyr 0.17.4 (C:/Users/Administrator/zephyr-sdk-0.17.4) -- Found toolchain: zephyr 0.17.4 (C:/Users/Administrator/zephyr-sdk-0.17.4) -- Found Dtc: C:/ProgramData/chocolatey/bin/dtc.exe (found suitable version \"1.6.1\", minimum required is \"1.4.6\") -- Found BOARD.dts: D:/Zephyr/zephyrproject/zephyr/boards/renesas/fpb_ra6e2/fpb_ra6e2.dts -- Generated zephyr.dts: D:/Zephyr/zephyrproject/zephyr/build/zephyr/zephyr.dts -- Generated pickled edt: D:/Zephyr/zephyrproject/zephyr/build/zephyr/edt.pickle -- Generated devicetree_generated.h: D:/Zephyr/zephyrproject/zephyr/build/zephyr/include/generated/zephyr/devicetree_generated.h D:/Zephyr/zephyrproject/zephyr/build/zephyr/zephyr.dts:818.14-821.5: Warning (simple_bus_reg): /soc/trng: missing or empty reg/ranges property Parsing D:/Zephyr/zephyrproject/zephyr/Kconfig Loaded configuration \'D:/Zephyr/zephyrproject/zephyr/boards/renesas/fpb_ra6e2/fpb_ra6e2_defconfig\' Merged configuration \'D:/Zephyr/zephyrproject/zephyr/samples/basic/blinky/prj.conf\' Configuration saved to \'D:/Zephyr/zephyrproject/zephyr/build/zephyr/.config\' Kconfig header saved to \'D:/Zephyr/zephyrproject/zephyr/build/zephyr/include/generated/zephyr/autoconf.h\' -- Found GnuLd: c:/users/administrator/zephyr-sdk-0.17.4/arm-zephyr-eabi/arm-zephyr-eabi/bin/ld.bfd.exe (found version \"2.38\") -- The C compiler identification is GNU 12.2.0 -- The CXX compiler identification is GNU 12.2.0 -- The ASM compiler identification is GNU -- Found assembler: C:/Users/Administrator/zephyr-sdk-0.17.4/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc.exe -- Using ccache: C:/Strawberry/c/bin/ccache.exe -- Found gen_kobject_list: D:/Zephyr/zephyrproject/zephyr/scripts/build/gen_kobject_list.py -- Configuring done (110.0s) -- Generating done (1.7s) -- Build files have been written to: D:/Zephyr/zephyrproject/zephyr/build -- west build: building application [1/143] Generating include/generated/zephyr/version.h -- Zephyr version: 4.3.99 (D:/Zephyr/zephyrproject/zephyr), build: v4.3.0-2928-g23354f3cad32 [143/143] Linking C executable zephyr\\\\zephyr.elf Memory regionUsed SizeRegion Size%age Used FLASH: 22400 B 256 KB8.54% RAM:4832 B40 KB11.80% OFS_OFS0_MEMORY:4 B 4 B 100.00% OFS_OSIS_MEMORY: 16 B16 B 100.00% OFS_OFS1_SEC_MEMORY:4 B 4 B 100.00% OFS_BPS_SEC_MEMORY:4 B 4 B 100.00% OFS_PBPS_SEC_MEMORY:4 B 4 B 100.00% IDT_LIST: 0 GB32 KB0.00% Generating files from D:/Zephyr/zephyrproject/zephyr/build/zephyr/zephyr.elf for board: fpb_ra6e2 (.venv) PS D:\\\\Zephyr\\\\zephyrproject\\\\zephyr> 13. 烧录程序 通过 USB 接口连接开发板, west flash 13.1 失败情况输出日志: 因没有连接开发板,直接烧录, (.venv) PS D:\\\\Zephyr\\\\zephyrproject\\\\zephyr> west flash -- west flash: rebuilding ninja: no work to do. -- west flash: using runner jlink -- runners.jlink: reset after flashing requested -- runners.jlink: JLink version: 8.92 -- runners.jlink: Flashing file: D:\\\\Zephyr\\\\zephyrproject\\\\zephyr\\\\build\\\\zephyr\\\\zephyr.hex FATAL ERROR: command exited with status 1: \'C:\\\\Program Files\\\\SEGGER\\\\JLink\\\\JLink.exe\' -nogui 1 -if swd -speed auto -device R7FA6E2BB -CommanderScript \'C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\tmpaq6zsh3yjlink\\\\runner.jlink\' -nogui 1 (.venv) PS D:\\\\Zephyr\\\\zephyrproject\\\\zephyr> 13.2 烧录成功日志: (.venv) PS D:\\\\Zephyr\\\\zephyrproject\\\\zephyr> west flash -- west flash: rebuilding ninja: no work to do. -- west flash: using runner jlink -- runners.jlink: reset after flashing requested -- runners.jlink: JLink version: 8.92 -- runners.jlink: Flashing file: D:\\\\Zephyr\\\\zephyrproject\\\\zephyr\\\\build\\\\zephyr\\\\zephyr.hex 14 视频教程 如果你也对瑞萨FPB-RA6E2感兴趣,或者对·Zephyr以上想学习,可以参照我的视频教程:在Windows环境的Zephyr-RTOS安装教程。https://www.bilibili.com/video/BV1jwBvBpEwN/?vd_source=9ebd187ccc98c26d8c32c09c0ffa5319 15 总结 以上是我本人亲手操作的基于瑞萨FPB-RA6E2,在Windows环境安装Zephyr的记录。 期望可以帮助有需要的人。 感谢电子发烧友平台,感谢瑞萨电子。

    2025-12-28 10:36

  • 【瑞萨RA6E2地奇星开发板试用】+ 功能选择及波形绘制

    在迷你型信号发生器的设计中,涉及界面、功能菜单、参数设置及波形显示等。 其界面如图1所示,所涉及的字模有相应的工具软件提取,参见图2所示。 图1 界面效果 图2 提取方式 实现界面效果的程序为: OLED_Init(); OLED_Clear(); OLED_ShowCHinese(0,0,0); OLED_ShowCHinese(16,0,1); OLED_ShowCHinese(32,0,2); OLED_ShowCHinese(48,0,3); OLED_ShowCHinese(64,0,4); OLED_ShowCHinese(80,0,5); OLED_ShowCHinese(96,0,6); OLED_ShowString(0,5,\"by:jinglixixi\",16); 为进行功能选择,所采用的方式是滚动功能选项式,参见图3和图4所示。为便于操作是利用2个按键来完成,其中K1键用于选取功能项,而K2键用于确认。 实现功能菜单显示及选取操作的程序为: OLED_Clear(); j=1; k=1; OLED_ShowChar(8,0,\'>\',16); while(j) { u=4000; ADC0_Convert(ADC_CHANNEL_0); u=ADC0_GetValue(ADC_CHANNEL_0); if(u<800) { if(k>7) { k=1; } else { k=k+1; } } else { if(u<1300) { j=0; } } p=k-1; gui_menu(p); OLED_ShowNum(80,0,k,2,16); R_BSP_SoftwareDelay (150, BSP_DELAY_UNITS_MILLISECONDS); } 图3 显示菜单 图4 滚动选项 实现参数设置的界面如图5所示,实现幅值输出的效果见图6和图7所示。 图5 参数设置 图6 输出高幅值电压 图7 输出低幅值电压 在设置占空比的情况下,占空比调节效果如图8和图9所示。 图8 占空比=20% 图9 占空比=80% 对于特殊的函数波形,其输出效果见图10至图13所示。此外,在连接步进电机的情况下,还可以控制步进电机的正向和反向转动。 图10 锯齿波效果 图11 三角波效果 图12 正弦波效果 图13 余弦波效果

    2025-12-27 22:59

  • 【瑞萨RA6E2地奇星开发板试用】+ 电压检测与OLED屏显示

    RA6E2 支持 12 位 ADC 电压检测,为检测电压值,这里使用通道0,即引脚P000 。为此,在RASC中需按图1进行设置。 图1配置 ADC 为驱动OLED屏显示,还需配置I2C以驱动OLED屏,所用引脚为P100和P101,见图2所示。 图2 配置I2C 在生成keil工程框架后,进入keil添加相应的功能程序以实现设计功能。 其中,实现通道0的检测程序为: volatile uint8_t ADC0_Busy; void adc0_callback(adc_callback_args_t * p_args) { FSP_PARAMETER_NOT_USED(p_args); ADC0_Busy = 0; } void ADC0_Init(void) { err = R_ADC_Open(&g_adc0_ctrl, &g_adc0_cfg); assert(FSP_SUCCESS == err); err = R_ADC_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_cfg); assert(FSP_SUCCESS == err); ADC0_Busy = 0; } void ADC0_Convert(uint8_t channel) { FSP_PARAMETER_NOT_USED(channel);/* Enable scan triggering from ELC events. */ err = R_ADC_ScanStart(&g_adc0_ctrl); assert(FSP_SUCCESS == err); } uint16_t ADC0_GetValue(uint8_t channel) { uint16_t ret; err = R_ADC_Read(&g_adc0_ctrl, (adc_channel_t)channel, &ret); assert(FSP_SUCCESS == err); return ret; } 实现OOLED屏初始化的函数为: void OLED_Init(void) { Write_IIC_Command(0xAE); Write_IIC_Command(0x20); Write_IIC_Command(0x10); Write_IIC_Command(0xb0); Write_IIC_Command(0xc8); Write_IIC_Command(0x00); Write_IIC_Command(0x10); Write_IIC_Command(0x40); Write_IIC_Command(0x81); Write_IIC_Command(0xdf); Write_IIC_Command(0xa1); Write_IIC_Command(0xa6); Write_IIC_Command(0xa8); Write_IIC_Command(0x3F); Write_IIC_Command(0xa4); Write_IIC_Command(0xd3); Write_IIC_Command(0x00); Write_IIC_Command(0xd5); Write_IIC_Command(0xf0); Write_IIC_Command(0xd9); Write_IIC_Command(0x22); Write_IIC_Command(0xda); Write_IIC_Command(0x12); Write_IIC_Command(0xdb); Write_IIC_Command(0x20); Write_IIC_Command(0x8d); Write_IIC_Command(0x14); Write_IIC_Command(0xaf); } 实现字符串显示的函数为: void OLED_ShowString(uint8_t x,uint8_t y,uint8_t *chr,uint8_t Char_Size) { unsigned char j=0; while (chr[j]!=\'\\\\0\') {OLED_ShowChar(x,y,chr[j],Char_Size); x+=8; if(x>120){x=0;y+=2;} j++; } } 实现ADC通道0检测与显示功能主程序为: void hal_entry(void) { uint16_t adc_data,u; uint32_t sum = 0; OLED_Init(); OLED_Clear(); OLED_ShowString(0,0,\"RA6E2-OLED\",16); OLED_ShowString(0,4,\"u=\",16); OLED_ShowString(0,6,\"U=mV\",16); OLED_ShowNum(24,4,sum,4,16); ADC0_Init(); while(1) { ADC0_Convert(ADC_CHANNEL_0); u=ADC0_GetValue(ADC_CHANNEL_0); sum=u*3300/4096; OLED_ShowNum(24,4,u,4,16); OLED_ShowNum(24,6,sum,4,16); R_BSP_SoftwareDelay (500, BSP_DELAY_UNITS_MILLISECONDS); } } 在完成测试电路连接的情况下,经程序的编译和下载,其测试效果如图3至图5所示。 图3 无键按下 图4 按下K1键 图5 按下K2键 之所以设计这个测试,是因为所用的功能模块有OLED和2个按键,但2个按键却只分配了一个引脚,为此要发挥2个按键的作用,就只能通过检测的电压差异来区分是哪个按键被按下。 经实际测试,按下KEY1时的电压约为0.5V;按下KEY2时的电压约为0.9V,这样就可以为2个按键分配不同的用途啦! 演示视频:

    2025-12-27 19:20

  • FPC排线金手指封装模版

    FPC排线金手指一般没有现成封装,LAYOUT比较耗时间,嘉立创FPC画了几个封装模版,有单排手指,和双排手指的,可以参考,需要的自行下载

    2025-12-27 11:38

  • LED灯珠寿命如何提升50%

    \"不是宣传说LED灯珠能用5万小时吗?怎么我家的电饭煲的指示灯一年就坏了?\"\"同样是LED灯,为什么别人家的三年不坏,我家的三个月就坏了?\" 在电子设备的显示与信号指示系统中,LED 灯珠的损坏往往直接导致功能失效,“LED 灯珠容易坏吗” 成为从业者与采购方的核心关切。实则 LED 灯珠本身属于长寿命元器件,理论上不易损坏,但实际应用中受品质、电路、环境等多重因素影响,损坏概率差异显著 —— 优质 LED 灯珠在合理使用下可稳定工作5万小时,劣质产品则可能短期内失效。如果按每天使用6小时计算,理论上可以使用20多年。 但现实却很骨感——很多电子设备的LED灯珠却是在一两年内就损坏了。问题出在哪里?今天我们就来一探究竟。 ​ LED灯珠,究竟有多\"长寿\"? 在理想条件下,LED灯珠是当之无愧的\"寿星\"。其寿命远超过传统照明产品,这主要得益于它的发光原理:直接将电能转换为光能,没有灯丝等易损件。 但这里必须澄清一个关键概念:LED的寿命通常不是指\"死灯\"(完全不亮),而是指光衰——当光通量降至初始值的50%时,即认为寿命终止。也就是说,很多\"坏掉\"的LED灯其实只是变暗了,而非完全不亮。 为什么你的LED灯珠\"短命\"?五大元凶浮出水面 1. 散热不良:寿命的\"头号杀手\" 温度对LED寿命的影响是决定性的。实验表明,LED灯珠理想工作温度在-5℃到0℃之间,虽然这在实际应用中难以实现,但控制工作温度至关重要。 为什么会这样?因为LED在工作时只有部分电能转化为光能,其余转化为热能。如果散热不良,热量积聚导致结温升高,会加速光衰,显著缩短寿命。 在实际案例中,当100颗LED白灯密集排列(间隔仅11.4mm)同时工作时,中间部位灯珠温度可能高达65℃,大大加速光衰过程。 2. 驱动电源:最薄弱的环节 LED灯珠理论寿命可达5万小时以上,而劣质驱动电源的寿命可能只有0.5-3万小时。没有优质的驱动电源,再好的灯珠也难以发挥其长寿潜力。 市面上常见的驱动电源主要有两种: 阻容驱动:成本低,但可靠性差,故障率高。灯珠工作电流会随市电电压波动,严重影响寿命 恒流驱动:能提供稳定电流,避免电流波动导致的过热和损坏,是延长LED寿命的关键 有厂家曾对一批驱动电源进行老化测试,整批1000个样品中,不良率高达30%以上,问题多发生在老化30-80分钟时。 3. 材料质量:从根源决定寿命 芯片质量是灯珠的\"心脏\",直接决定产品的寿命和光衰速度。不同品质的LED芯片关键差异在于光衰速度——高品质芯片光衰小,寿命更长。 封装材料同样至关重要。普通环氧树脂封装LED白灯在30度环境下点亮1000小时后,光衰可能高达70%;而采用优质胶水封装的产品,在同等条件下光衰可控制在6%以内。 支架材料也是重要因素。铜支架导热系数(398W/m·K)远超铁支架(约50W/m·K),散热性能相差近8倍。 4. 机械结构与工艺缺陷 LED制造过程中的工艺问题也会严重影响可靠性: 键合工艺不当:键合力过大会压伤芯片,过小则导致键合强度不足 封装缺陷:封装体内气泡会导致水汽积聚,引线腐蚀 机械应力:在SMT工艺流转、运输中外部撞击可能导致内部绑定线断裂 5. 使用环境与方式 环境温度:在相同散热条件下,环境温度越高,灯珠寿命越短 频繁开关:导致LED灯珠经历反复的热胀冷缩,加速材料老化 驱动电流:研究表明,将驱动电流从标准的20mA降低到14mA,可大幅延缓光衰 如何延长LED灯珠寿命?五大实用建议 重视散热设计:确保灯具散热面积足够大,避免将灯具安装在密闭空间。对于大功率LED,考虑增加散热片或风扇 选择优质驱动电源:优先选择恒流驱动而非阻容驱动。查看产品是否有3C认证,确保内置保险丝等安全设计 合理安装与使用:避免不必要的频繁开关。注意安装方向——例如LED射灯应向下安装,便于热量散发 定期清洁维护:灯珠表面灰尘和污垢会降低散热效果,导致工作温度升高。定期清洁可有效延长寿命 选择可靠品牌:购买时优先选择知名品牌,如洲创LED灯珠、欧司朗等品牌 LED灯珠本身是一种长寿命、高可靠性的光源,但其潜力的发挥需要优质的配套元件、合理的设计和正确的使用方式作为支撑。为帮助客户降低LED灯珠损坏率,东莞市洲创实业有限公司提供样品支持与技术对接服务:客户可申请LED灯珠样品进行极限环境与参数测试;FAE团队会协助排查电路设计、焊接工艺、环境适配等问题,提供限流保护、防潮散热的优化方案。总之,LED 灯珠本身不易坏,损坏多由电流过载、电压冲击、环境恶劣、操作不当及品质缺陷导致。东莞市洲创实业有限公司 15 年专注LED灯珠定制生产厂家,所产 LED 灯珠抗损性与稳定性优异,结合丰富产品线与强大客户背书,是电子企业采购耐用LED 灯珠的可靠合作伙伴。

    2025-12-27 10:12

  • 【瑞萨RA6E2地奇星开发板试用】点亮 WS2812 全彩点阵屏

    WS2812 是彩色灯珠控制芯片,可以控制 RGB 三色灯珠混合呈现出 16M 种颜色,WS2812 有单颗芯片形式,需要外接 RGB 灯珠,也有集成 WS2812 的 RGB 灯珠。 WS2812 通过单总线方式控制,只需一个 IO 口,就可以点亮数千个灯珠。 这里使用 RA6E2 点亮 WS2812 灯珠,效果如下: WS2812 可以使用 IO 模拟时序控制,也可以使用 PWM 和 SPI 方式控制,IO 口模拟时序会占用较多 CPU 时间 这里使用 SPI 控制方式,接口定义如下: 引脚 功能 P207 MOSI(DIN) 通过 SPI 的 MOSI 引脚,可以模拟出 WS2812 所需的时序 使能硬件 SPI0 功能,在 RASC 上配置如下: 引脚配置: SPI 外设配置: 配置 SPI0 速率 4Mbps,使能后即可使用以下函数初始化 SPI0 接口: fsp_err_t err = R_SPI_Open(&g_spi0_ctrl, &g_spi0_cfg); 使用以下函数发送数据: fsp_err_t err = R_SPI_Write(&g_spi0_ctrl, &dat, 1, SPI_BIT_WIDTH_8_BITS); WS2812 的控制时序一般是 800Kbps 左右,这里使用 1Mbps,SPI 配置为 4Mbps, 使用 4bit SPI 数据模拟 1 bit 单总线数据 ,1 像素图像数据需要占用 12 字节内存 设置好 SPI 接口后,就可以进行初始化寄存器配置和图像显示了,SPI 发送 0x0E 代表发送 bit1,发送 0x08 表示发送 bit0,先发 G 再发 R 最后发 B,高位在前 最后进行 HSV 转 RGB 的色域转换过程,HSV 会使颜色过渡更为自然 for (j=0; j<8; j++) { for (i=0; i<8; i++) { Canvas_SetPenColor(canvas, Color_HSV_RGB888(360/8*((i+x)%8), 1, 0.01)); Canvas_Point(canvas, i, j); } } WS2812_Draw(Image_DataPtr(image), 64); 绘制效果见视频

    2025-12-27 03:28

  • 【瑞萨RA6E2地奇星开发板试用】PWM 驱动舵机

      本篇使用 RA6E2 的 PWM 输出,来驱动舵机转动,使用 RA6E2 驱动舵机非常方便,只要配置好 GPT PWM 模块,就能轻松实现角度控制。 硬件准备 1、RA6E2 开发板 2、舵机 3、杜邦线若干 接线方式 舵机: 开发板引脚 舵机引脚 3V3 VCC GND GND P206 SIGN 软件说明 舵机: • 舵机接受 50 Hz(周期 20 ms)PWM,脉宽 0.5–2.5 ms 对应角度 0–180° 占空比对应角度: • 0.5 ms → 0° • 1.5 ms → 90° • 2.5 ms → 180° 在 RASC 软件里进行 PWM 配置: 时钟配置: GPT 外设使用 PCLKD 时钟,默认设置为 2 分频 100MHz 由于 RA6E2 只有 16 位定时器,100MHz / 50Hz = 2000000 > 65535,100MHz 时钟无法产生 50Hz 的低频,要使 PCLKD 时钟低于 3.2768MHz 才能产生 50Hz PWM 将 PCLKD 时钟设置为最低,64 分频 3.125MHz,RA6M4 等有 32 位定时器,这里可以设置 100MHz 调低 PCLKD 后, PCLKA 和 PCLKB 也需要调低才能使用,会影响到 UART/SPI 等最大速率,需要确认 引脚配置: 这里使用 GPT5 GTIOC5B 通道,对应引脚 P206 PWM 外设配置: 使能引脚输出 配置完成后,编写代码输出波形,使用逻辑分析仪测量脉冲信号如下: 由于是 3.125M 的时钟,设置 50Hz 即 20ms 的值如下: (3125000 / 50 = 62500) R_GPT_PeriodSet(&g_timer5_ctrl, 62500); 设置 1.5ms 脉宽的值如下:R_GPT_DutyCycleSet(&g_timer5_ctrl, 4688, GPT_IO_PIN_GTIOCB); 代码如下: void PWM_Demo(void) { fsp_err_t err = R_GPT_Open(&g_timer5_ctrl, &g_timer5_cfg); assert(FSP_SUCCESS == err); (void) R_GPT_Start(&g_timer5_ctrl); R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS); err = R_GPT_PeriodSet(&g_timer5_ctrl, 62500); assert(FSP_SUCCESS == err); R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS); while (1) { R_GPT_DutyCycleSet(&g_timer5_ctrl, 1563, GPT_IO_PIN_GTIOCB); Delay_Ms(1000); R_GPT_DutyCycleSet(&g_timer5_ctrl, 4688, GPT_IO_PIN_GTIOCB); Delay_Ms(1000); R_GPT_DutyCycleSet(&g_timer5_ctrl, 7813, GPT_IO_PIN_GTIOCB); Delay_Ms(1000); R_GPT_DutyCycleSet(&g_timer5_ctrl, 4688, GPT_IO_PIN_GTIOCB); Delay_Ms(1000); } }

    2025-12-27 03:27

  • 【瑞萨RA6E2地奇星开发板试用】驱动 LCD 显示屏

    瑞萨 R7FA6E2 有 2 个 SPI 接口,除此之外,还有 2 个 SCI 接口可以实现 SPI 功能,这次使用 SPI0 接口来驱动 LCD 屏 与 R7FA4E2 相比,R7FA6E2 有更高的主频,能够支持更高的 SPI 速率 ST7796U 是一款支持 320x480 像素的 LCD 控制器,并且能够支持 RGB565、RGB666 颜色深度,效果如图: 使用的是 NXP 的 LCD-PAR-S035 显示屏,SPI 引脚与 PMOD 相关引脚位置对应: 接口定义如下: 引脚 功能 P111 SCK P109 MOSI P110 DC P408 RST P301 CS 使能硬件 SPI0 功能,在 RASC 上配置如下: 引脚配置(忽略以下错误提醒,显示屏不使用 MISO 引脚,MISO 配置成推挽输出,用来当作 DC 引脚): SPI 外设配置,这里配置成 Transmit Only: 配置 SPI0 速率 50Mbps,使能后即可使用以下函数初始化 SPI0 接口: fsp_err_t err = R_SPI_Open(&g_spi0_ctrl, &g_spi0_cfg); 使用以下函数发送数据: fsp_err_t err = R_SPI_Write(&g_spi0_ctrl, &dat, 1, SPI_BIT_WIDTH_8_BITS); 未使用 DMA,采用的是中断清除标志位方式进行 SPI 数据发送,代码如下: void SPI0_Tx1B(u16 dat) { while (gf_SPI0_Busy); gf_SPI0_Busy = 1; fsp_err_t err = R_SPI_Write(&g_spi0_ctrl, &dat, 1, SPI_BIT_WIDTH_8_BITS); assert(err == FSP_SUCCESS); } 中断函数中清除发送忙标志位: void spi0_callback (spi_callback_args_t * p_args) { if (SPI_EVENT_TRANSFER_COMPLETE == p_args->event) { gf_SPI0_Busy = 0; } } 设置好 SPI 接口后,就可以进行初始化寄存器配置和图像显示了 显示色盘代码如下: #define M_PI 3.14159 void draw_circular_gradient(GUI_t gui) { int center_x = WIDTH / 2; int center_y = HEIGHT / 2; float max_distance = sqrtf(center_x * center_x + center_y * center_y); for (int y = 0; y < HEIGHT; y++) { for (int x = 0; x < WIDTH; x++) { float dx = x - center_x; float dy = y - center_y; float distance = sqrtf(dx * dx + dy * dy); float angle = atan2f(dy, dx); if (angle < 0) angle += 2 * M_PI; uint8_t r, g, b; if (angle < M_PI / 3) { float t = angle / (M_PI / 3); r = 255; g = (uint8_t)(255 * t); b = 0; } else if (angle < 2 * M_PI / 3) { float t = (angle - M_PI / 3) / (M_PI / 3); r = (uint8_t)(255 * (1 - t)); g = 255; b = 0; } else if (angle < M_PI) { float t = (angle - 2 * M_PI / 3) / (M_PI / 3); r = 0; g = 255; b = (uint8_t)(255 * t); } else if (angle < 4 * M_PI / 3) { float t = (angle - M_PI) / (M_PI / 3); r = 0; g = (uint8_t)(255 * (1 - t)); b = 255; } else if (angle < 5 * M_PI / 3) { float t = (angle - 4 * M_PI / 3) / (M_PI / 3); r = (uint8_t)(255 * t); g = 0; b = 255; } else { float t = (angle - 5 * M_PI / 3) / (M_PI / 3); r = 255; g = 0; b = (uint8_t)(255 * (1 - t)); } float brightness = 1.0f - (distance / max_distance) * 0.8f; if (brightness < 0.2f) brightness = 0.2f; r = (uint8_t)(r * brightness); g = (uint8_t)(g * brightness); b = (uint8_t)(b * brightness); uint16_t color = COLOR_RGB565(r, g, b); GUI_SetPenColor(gui, color); GUI_Point(gui, x, y); } } }

    2025-12-27 03:24

  • 【EASY EAI Nano-TB(RV1126B)开发板试用】+桌面系统安装及测试

    EASY-EAI-NANO-TB固件是不带桌面系统的,对于使用桌面系统的用户需自行安装。完成一定要使用系统具备下载程序的能力,前面以介绍了建立网络通信的方法,以此为基础即可进行桌面系统的安装。 1)执行指令安装xfce、lightdm等桌面系统所需软件 2)执行指令创建override.conf 其中,override.conf的内容为: 3)手动选择lightdm 在连接显示屏的情况下,重启板卡即可在屏幕上显示桌面系统,见图1所示。 图1 进入桌面系统 此时,需要输入密码:123456进行登录,见图2所示。 值得指出的是,桌面系统是支持键盘和鼠标的,为此在上电前应连接好键盘和鼠标,见图3所示。 图3 连接键鼠 完成登录后,呈现的桌面形式如图4所示。 图4 桌面形式 系统所提供的相应功能可使用左上角的功能菜单来选取,见图5所示。 图5 功能下拉菜单 使用桌面的文件夹图标可进行相应的文件操作,见图6所示。 图6 文件操作 打开指令窗口可以指令方式进行操作,见图7所示。 图7 指令操作 使用系统所提供的绘图工具可进行绘画操作,见图8所示。 图8 绘制工具 此外,在安装网页浏览器的情况下还可进行网页浏览,见图9所示。 图9 网页浏览

    2025-12-26 23:53

  • 【EASY EAI Nano-TB(RV1126B)开发板试用】+网络通信及测试

    要进行桌面的安装,必须建立相应的程序下载通道,不是通过网络,就是通过WIFI或蓝牙。 这里是选取网络的方式,开发板上网口的位置及连接方式如图1和图2所示。 图1 网口位置 图2 网络连接 通过相应的指令,可查看开发板网络配置的存放路径,其指令为: ls /etc/netplan 所得到的结果如图3所示,其中存在4个配置文件。其中,50-eth0-init.yaml是与NET0相关的netplan配置,51-eth1-init.yaml是与NET1相关的netplan配置。 图3 测试结果 通过PING指令可测试网络的状态,其测试结果如图4所示,说明网络处于连接状态可以进行使用。 图4 网络测试

    2025-12-26 22:44