瑞萨RA6E2相关测评

RA6E2 微控制器评测报告

1. 使用体验

入门有一定难度,社区资源较少,但官方文档齐全,开发板功能丰富,适合中高级开发者。没想到点个灯点了半天,对 e2studio 不太熟悉,以及瑞萨的开发板的引脚命名和外设命名与其他(STM32、TI)有一定差别,我第一次发现有一定难度。不过瑞萨的配置比较精细,这也是我觉得比较难的原因,初学者可能得了解更多,配置更多才能使用。

有一个比较好的方面是,在 e2studio 中有一个 HAL 库支持,可以看到已经配置外设的一些函数,通过这些函数,可以了解外设的配置,并便捷地传递参数。我尝试了进行 PWM 驱动电机和 UART,移植了大佬的代码后,可以实现相应的功能,注意多多查阅瑞萨相关的资料,瑞萨小百科的公众号可以查阅到不少入门的资料。该套板子支持的资源不多,我未能找到相关的例程进行学习,这也是一个比较大的问题。毕竟是进行测评,希望能够找到一些例程进行学习,这样对于初学者来说会更加友好。

2. 样片申请和测试

在瑞萨电子的官方网站和微信公众号上,用户可以免费申请 RA6E2 的样片进行试用。完成测评后,用户还可以免费获得开发板或样片。测评结果会通过邮件发送,需回复地址信息以便邮寄。

开发板

收到快递后,包装包含一个白色的小盒子,其中有两张关于 RA6E2 的介绍卡片和 RA6E2 样片。介绍卡片提供了 RA6E2 的主要特点、应用场景、引脚信息和板载外设的描述。

在这里插入图片描述

在测评前,需要对瑞萨公司进行了解并查阅相关资料。由于瑞萨的资料在一般博客上不易找到,建议直接在官网查询(官网资料最为全面和精准)。在 瑞萨电子官网 上,可以一站式找到与 RA6E2 相关的所有资料。

3. 瑞萨官网介绍

瑞萨电子的官方网站 (Renesas) 提供了丰富的产品信息、技术支持、开发工具和应用实例。用户可以在官网上找到最新的产品规格、开发指南、应用笔记及技术文档。官网主要模块如下:

官网底部官网菜单栏

3.1 设计和开发

瑞萨提供多种设计和开发资源,帮助工程师快速构建和测试原型。主要内容包括:

  • 开发板及套件:提供多种开发板和评估套件,方便工程师快速上手进行项目测试和开发。
  • 开发工具:包括集成开发环境、调试工具和编程工具,支持多种编程语言和开发需求,提升开发效率。
  • 封装:提供产品封装信息,包括引脚图和尺寸图,确保设计与制造的高效对接。
  • 软件和驱动程序:提供与硬件兼容的软件和驱动程序,确保设备的顺畅运作,支持多种操作系统。
  • 软件与工具:包括模拟软件、配置工具和测试工具,方便开发者在设计过程中进行优化。
  • 交叉检索:帮助用户快速找到符合条件的产品和解决方案,提升设计效率。
  • GADGET RENESAS 创客资源:为创客和开发者提供的资源,支持快速原型开发和创新设计。

3.2 特色设计工具

瑞萨官网提供了多款特色设计工具,旨在简化设计流程、提高效率,包括:

  • 快速连接平台:用于快速搭建和连接系统组件的平台,适用于测试和原型设计。
  • 云上的实验室:提供云端的测试和模拟环境,支持远程测试和验证。
  • PowerCompass 多轨设计工具:帮助在多电源轨系统中优化电源设计,提高系统效率。
  • PowerNavigator:用于电源管理和配置的工具,支持控制和监控系统电源状态。
  • Timing Commander:精确的时序控制工具,帮助设计者确保系统中的时序控制。

3.3 内容和培训

瑞萨提供丰富的内容和培训资源,帮助用户深入了解产品,提升技术能力:

  • 博客:提供关于瑞萨产品、应用案例和技术趋势的资讯,帮助用户紧跟前沿。
  • 文档和下载:官网提供详细的产品文档、手册和技术规范,供用户下载参考。
  • 培训和教程:多种形式的培训课程和在线教程,帮助用户快速掌握产品特性和应用技巧。
  • 视频:提供丰富的技术视频,包括产品介绍、应用指南和培训视频,便于用户随时学习。
  • 在线研讨会:定期举行的在线研讨会,涵盖最新技术趋势和产品应用,用户可与专家互动交流。

4. 引言

瑞萨电子(Renesas Electronics)是一家全球领先的微控制器和系统单芯片解决方案提供商。RA6E2 系列微控制器基于 200MHz 的 Arm Cortex-M33 内核,集成了丰富的外设接口和强大的安全特性。本文旨在评估 RA6E2 的性能,尤其是在应用于距离传感器、温湿度传感器及舵机控制的场景下。

5. 瑞萨 RA6E2 概述

瑞萨 RA6E2 系列的主要特点包括:

  • 200MHz 的 Arm Cortex-M33,具有 TrustZone 功能,提供增强的安全性。
  • 128KB - 256KB 的闪存和 40KB 的 SRAM,满足多种应用需求。
  • 4KB 数据闪存,类似 EEPROM 数据存储功能,方便存储临时数据。
  • 1KB 待机 SRAM,降低功耗,延长设备的使用寿命。
  • 可从 32 个引脚扩展到 64 个引脚的封装,适应不同规模的应用设计。
  • 支持 USB 2.0 全速、CAN FD、I3C、HDMI CEC、SSI 和 Quad SPI 等多种通信接口。
  • 12 位 A/D 转换器和 D/A 转换器,适合精确的模拟信号处理。
  • 通用 PWM 定时器,便于控制舵机等设备。

6. 相关的函数调用

6.1 I/O Port 控制函数详细说明

6.1.1 R_IOPORT_Open
  • 功能:初始化 I/O 端口控制模块,配置相关资源以便后续的 I/O 操作。
  • 函数定义
    fsp_err_t R_IOPORT_Open(ioport_ctrl_t *p_ctrl, const ioport_cfg_t *p_cfg)
    
  • 参数
    • p_ctrl:指向 I/O 控制块的指针,用于存储 I/O 控制模块的状态信息。
    • p_cfg:指向 I/O 配置结构体的指针,包含端口初始配置的详细信息。
  • 使用说明:在使用 I/O 端口进行读写之前必须调用此函数完成初始化。
6.1.2 R_IOPORT_Close
  • 功能:关闭 I/O 端口控制模块,释放相关资源。
  • 函数定义
    fsp_err_t R_IOPORT_Close(ioport_ctrl_t *p_ctrl)
    
  • 参数
    • p_ctrl:指向 I/O 控制块的指针,标识要关闭的 I/O 模块。
  • 使用说明:在不再需要使用 I/O 端口时调用此函数,以释放系统资源。
6.1.3 R_IOPORT_PinsCfg
  • 功能:配置一组引脚的属性,如方向、初始状态等。
  • 函数定义
    fsp_err_t R_IOPORT_PinsCfg(ioport_ctrl_t *const p_ctrl, const ioport_cfg_t *p_cfg)
    
  • 参数
    • p_ctrl:指向 I/O 控制块的指针。
    • p_cfg:指向配置结构体的指针,包含需要配置的引脚组的具体配置。
  • 使用说明:在初始化 I/O 后,可使用此函数对多个引脚进行批量配置。
6.1.4 R_IOPORT_PinCfg
  • 功能:配置单个引脚的属性。
  • 函数定义
    fsp_err_t R_IOPORT_PinCfg(ioport_ctrl_t *const p_ctrl, bsp_io_port_pin_t pin, uint32_t cfg)
    
  • 参数
    • p_ctrl:指向 I/O 控制块的指针。
    • pin:要配置的引脚编号。
    • cfg:引脚的配置参数,通常包含方向(输入/输出)、初始状态等信息。
  • 使用说明:用于对单个引脚进行单独的配置操作。
6.1.5 R_IOPORT_PinRead
  • 功能:读取指定引脚的电平状态。
  • 函数定义
    fsp_err_t R_IOPORT_PinRead(ioport_ctrl_t *const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t *p_pin_value)
    
  • 参数
    • p_ctrl:指向 I/O 控制块的指针。
    • pin:要读取的引脚编号。
    • p_pin_value:指向存储读取电平状态的变量的指针,读取后此值为高或低电平。
  • 使用说明:用于检测引脚的电平状态,如按键输入。
6.1.6 R_IOPORT_PortRead
  • 功能:读取整个端口的值。
  • 函数定义
    fsp_err_t R_IOPORT_PortRead(ioport_ctrl_t *const p_ctrl, bsp_io_port_t port, ioport_size_t *p_port_value)
    
  • 参数
    • p_ctrl:指向 I/O 控制块的指针。
    • port:要读取的端口编号。
    • p_port_value:指向存储读取端口值的变量的指针,读取后包含该端口的所有引脚状态。
  • 使用说明:用于同时读取多个引脚的状态。
6.1.7 R_IOPORT_PortWrite
  • 功能:设置整个端口的值。
  • 函数定义
    fsp_err_t R_IOPORT_PortWrite(ioport_ctrl_t *const p_ctrl, bsp_io_port_t port, ioport_size_t value, ioport_size_t mask)
    
  • 参数
    • p_ctrl:指向 I/O 控制块的指针。
    • port:要设置的端口编号。
    • value:要写入的值,表示该端口的每个引脚状态。
    • mask:掩码,用于指定哪些引脚受影响。
  • 使用说明:用于同时设置多个引脚的状态。
6.1.8 R_IOPORT_PinWrite
  • 功能:设置单个引脚的电平状态。
  • 函数定义
    fsp_err_t R_IOPORT_PinWrite(ioport_ctrl_t *const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t level)
    
  • 参数
    • p_ctrl:指向 I/O 控制块的指针。
    • pin:要设置的引脚编号。
    • level:设置的电平值,通常为高电平或低电平。
  • 使用说明:用于控制单个引脚的输出,如 LED 点亮或关闭。
6.1.9 R_IOPORT_PortDirectionSet
  • 功能:设置端口中多个引脚的方向(输入或输出)。
  • 函数定义
    fsp_err_t R_IOPORT_PortDirectionSet(ioport_ctrl_t *const p_ctrl, bsp_io_port_t port, ioport_size_t direction_values, ioport_size_t mask)
    
  • 参数
    • p_ctrl:指向 I/O 控制块的指针。
    • port:要设置的端口编号。
    • direction_values:方向设置,值为输入或输出。
    • mask:掩码,用于指定哪些引脚受影响。
  • 使用说明:用于批量设置端口的引脚方向。

6.2 UART 控制函数详细说明

6.2.1 R_SCI_UART_Open
  • 功能:初始化 UART 控制模块,配置相关资源以便后续的串行通信操作。
  • 函数定义
    fsp_err_t R_SCI_UART_Open(uart_ctrl_t * const p_api_ctrl, uart_cfg_t const *const p_cfg)
    
  • 参数
    • p_api_ctrl:指向 UART 控制块的指针,用于存储 UART 控制模块的状态信息。
    • p_cfg:指向 UART 配置结构体的指针,包含串行通信的初始化配置,包括波特率、数据位、停止位等。
  • 使用说明:在开始 UART 通信之前需要调用该函数进行初始化。
6.2.2 R_SCI_UART_Close
  • 功能:关闭 UART 控制模块,释放相关资源。
  • 函数定义
    fsp_err_t R_SCI_UART_Close(uart_ctrl_t *const p_api_ctrl)
    
  • 参数
    • p_api_ctrl:指向 UART 控制块的指针,标识要关闭的 UART 模块。
  • 使用说明:在不再需要使用 UART 进行通信时调用此函数,以释放系统资源。
6.2.3 R_SCI_UART_Read
  • 功能:从 UART 读取指定数量的字节数据。
  • 函数定义
    fsp_err_t R_SCI_UART_Read(uart_ctrl_t *const p_api_ctrl, uint8_t *const p_dest, uint32_t const bytes)
    
  • 参数
    • p_api_ctrl:指向 UART 控制块的指针。
    • p_dest:指向存储接收数据的缓冲区。
    • bytes:要读取的字节数。
  • 使用说明:用于接收 UART 数据,通常在串口通信中用于读取传感器或其他外设的反馈信息。
6.2.4 R_SCI_UART_Write
  • 功能:通过 UART 发送指定数量的字节数据。
  • 函数定义
fsp_err_t R_SCI_UART_Write(uart_ctrl_t *const p_api_ctrl, uint8_t *const p_src, uint32_t const bytes)
  • 参数
    • p_api_ctrl:指向 UART 控制块的指针。
    • p_src:指向要发送的数据缓冲区。
    • bytes:要发送的字节数。
  • 使用说明:用于发送 UART 数据,例如调试信息或传感器数据发送至主控。
6.2.5 R_SCI_UART_CallbackSet
  • 功能:设置 UART 模块的回调函数,用于处理接收和发送完成等事件。
  • 函数定义
fsp_err_t R_SCI_UART_CallbackSet(uart_ctrl_t *const p_api_ctrl, void(*p_callback)(void), void const *const p_context, uart_callback_args_t *const p_callback_memory)
  • 参数
    • p_api_ctrl:指向 UART 控制块的指针。
    • p_callback:指向回调函数的指针。
    • p_context:上下文信息,用于回调中传递的用户自定义数据。
    • p_callback_memory:回调函数使用的内存。
  • 使用说明:用于注册回调函数,以处理 UART 传输完成或错误等事件。
6.2.6 R_SCI_UART_BaudSet
  • 功能:设置 UART 通信的波特率。
  • 函数定义
fsp_err_t R_SCI_UART_BaudSet(uart_ctrl_t *const p_api_ctrl, void const *const p_baud_setting)
  • 参数
    • p_api_ctrl:指向 UART 控制块的指针。
    • p_baud_setting:指向波特率设置结构体的指针,包含波特率、停止位、数据位等配置信息。
  • 使用说明:用于更改 UART 通信的波特率设置。
6.2.7 R_SCI_UART_InfoGet
  • 功能:获取 UART 的状态和配置信息。
  • 函数定义
fsp_err_t R_SCI_UART_InfoGet(uart_ctrl_t *const p_api_ctrl, uart_info_t *p_info)
  • 参数
    • p_api_ctrl:指向 UART 控制块的指针。
    • p_info:指向用于存储 UART 状态信息的结构体。
  • 使用说明:用于检查 UART 的当前状态,包括传输状态、错误状态等。
6.2.8 R_SCI_UART_Abort
  • 功能:中止正在进行的 UART 通信。
  • 函数定义
fsp_err_t R_SCI_UART_Abort(uart_ctrl_t *const p_api_ctrl, uart_dir_t communication_to_abort)
  • 参数
    • p_api_ctrl:指向 UART 控制块的指针。
    • communication_to_abort:指示要中止的通信方向(接收或发送)。
  • 使用说明:当需要立即停止 UART 通信时调用,例如在错误发生时中止传输。
6.2.9 R_SCI_UART_ReadStop
  • 功能:停止当前的 UART 接收操作。
  • 函数定义
fsp_err_t R_SCI_UART_ReadStop(uart_ctrl_t *const p_api_ctrl, uint32_t *remaining_bytes)
  • 参数
    • p_api_ctrl:指向 UART 控制块的指针。
    • remaining_bytes:指向存储剩余未接收字节数的变量。
  • 使用说明:用于在接收操作过程中临时停止接收。
6.2.10 R_SCI_UART_BaudCalculate
  • 功能:根据指定的波特率和误差计算 UART 波特率配置。
  • 函数定义
fsp_err_t R_SCI_UART_BaudCalculate(uint32_t baudrate, bool bitrate_modulation, uint32_t baud_rate_error_x_1000, baud_setting_t *const p_baud_setting)
  • 参数
    • baudrate:期望的波特率。
    • bitrate_modulation:启用位速率调制。
    • baud_rate_error_x_1000:允许的波特率误差,以千分之一为单位。
    • p_baud_setting:指向波特率配置结构体的指针,用于存储计算结果。
  • 使用说明:用于精确设置 UART 波特率以确保通信质量。

6.3 GPT 定时器控制函数详细说明

6.3.1 R_GPT_Open
  • 功能:初始化 GPT 模块,配置相关资源以便后续的定时器操作。
  • 函数定义
fsp_err_t R_GPT_Open(timer_ctrl_t *p_ctrl, timer_cfg_t const *p_cfg)
  • 参数
    • p_ctrl:指向 GPT 控制块的指针,用于存储 GPT 模块的状态信息。
    • p_cfg:指向 GPT 配置结构体的指针,包含定时器的初始化设置,包括计数模式、周期等。
  • 使用说明:在使用 GPT 计时或 PWM 生成之前需要调用此函数进行初始化。
6.3.2 R_GPT_Start
  • 功能:启动 GPT 计时器。
  • 函数定义
fsp_err_t R_GPT_Start(timer_ctrl_t *const p_ctrl)
  • 参数
    • p_ctrl:指向 GPT 控制块的指针。
  • 使用说明:在完成 GPT 初始化后调用此函数开始计时或 PWM 输出。
6.3.3 R_GPT_Stop
  • 功能:停止 GPT 计时器。
  • 函数定义
fsp_err_t R_GPT_Stop(timer_ctrl_t *const p_ctrl)
  • 参数
    • p_ctrl:指向 GPT 控制块的指针。
  • 使用说明:用于临时停止计时器操作,例如在需要暂停时调用。
6.3.4 R_GPT_Reset
  • 功能:将 GPT 计时器计数器重置为零。
  • 函数定义
fsp_err_t R_GPT_Reset(timer_ctrl_t *const p_ctrl)
  • 参数
    • p_ctrl:指向 GPT 控制块的指针。
  • 使用说明:在重新开始计时或清除计时器状态时调用。
6.3.5 R_GPT_PeriodSet
  • 功能:设置 GPT 计时器的周期。
  • 函数定义
fsp_err_t R_GPT_PeriodSet(timer_ctrl_t *const p_ctrl, uint32_t const period_counts)
  • 参数
    • p_ctrl:指向 GPT 控制块的指针。
    • period_counts:计时器周期的计数值。
  • 使用说明:用于设置 PWM 输出的周期或定时器的计时周期。
6.3.6 R_GPT_DutyCycleSet
  • 功能:设置 GPT 定时器的 PWM 占空比。
  • 函数定义
fsp_err_t R_GPT_DutyCycleSet(timer_ctrl_t *const p_ctrl, uint32_t const duty_cycle_counts, uint32_t const pin)
  • 参数
    • p_ctrl:指向 GPT 控制块的指针。
    • duty_cycle_counts:PWM 占空比的计数值。
    • pin:输出 PWM 信号的引脚编号。
  • 使用说明:用于控制 PWM 输出信号的占空比,例如用于控制舵机的位置。
6.3.7 R_GPT_CompareMatchSet
  • 功能:设置 GPT 的比较匹配值。
  • 函数定义
fsp_err_t R_GPT_CompareMatchSet(timer_ctrl_t *const p_ctrl, uint32_t const compare_match_value, timer_compare_match_t const match_channel)
  • 参数
    • p_ctrl:指向 GPT 控制块的指针。
    • compare_match_value:比较匹配的计数值。
    • match_channel:指定比较匹配的通道。
  • 使用说明:用于设置定时器的比较匹配功能,用于检测特定时间的到达。
6.3.8 R_GPT_InfoGet
  • 功能:获取 GPT 的当前状态和配置信息。
  • 函数定义
fsp_err_t R_GPT_InfoGet(timer_ctrl_t *const p_ctrl, timer_info_t *const p_info)
  • 参数
    • p_ctrl:指向 GPT 控制块的指针。
    • p_info:指向用于存储 GPT 状态信息的结构体。
  • 使用说明:用于获取当前定时器的状态,包括计数值、周期等信息。
6.3.9 R_GPT_StatusGet
  • 功能:获取 GPT 的当前计数状态。
  • 函数定义
fsp_err_t R_GPT_StatusGet(timer_ctrl_t *const p_ctrl, timer_status_t *const p_status)
  • 参数
    • p_ctrl:指向 GPT 控制块的指针。
    • p_status:指向存储 GPT 状态信息的结构体,包含计数状态。
  • 使用说明:用于检查计数器的当前状态,如是否正在运行。
6.3.10 R_GPT_OutputEnable
  • 功能:启用 GPT 的 PWM 输出功能。
  • 函数定义
fsp_err_t R_GPT_OutputEnable(timer_ctrl_t *const p_ctrl, gpt_io_pin_t pin)
  • 参数
    • p_ctrl:指向 GPT 控制块的指针。
    • pin:指定输出 PWM 信号的引脚。
  • 使用说明:在启用 PWM 输出之前调用此函数。
6.3.11 R_GPT_OutputDisable
  • 功能:禁用 GPT 的 PWM 输出功能。
  • 函数定义
fsp_err_t R_GPT_OutputDisable(timer_ctrl_t *const p_ctrl, gpt_io_pin_t pin)
  • 参数
    • p_ctrl:指向 GPT 控制块的指针。
    • pin:指定禁用 PWM 信号的引脚。
  • 使用说明:当不再需要 PWM 输出时调用此函数。
6.3.12 R_GPT_CallbackSet
  • 功能:设置 GPT 的回调函数,用于处理中断事件。
  • 函数定义
fsp_err_t R_GPT_CallbackSet(timer_ctrl_t *const p_api_ctrl, void (*p_callback)(void), void const *const p_context, timer_callback_args_t *const p_callback_memory)
  • 参数
    • p_api_ctrl:指向 GPT 控制块的指针。
    • p_callback:指向回调函数的指针。
    • p_context:上下文信息,用于回调中传递的用户自定义数据。
    • p_callback_memory:回调函数使用的内存。
  • 使用说明:用于注册回调函数,以处理定时器事件或中断### 6.4 AGT 定时器控制函数详细说明
6.4.1 R_AGT_Open
  • 功能:初始化 AGT 模块,配置相关资源以便后续的低功耗定时器操作。
  • 函数定义
fsp_err_t R_AGT_Open(timer_ctrl_t *p_ctrl, timer_cfg_t const *p_cfg)
  • 参数
    • p_ctrl:指向 AGT 控制块的指针,用于存储 AGT 模块的状态信息。
    • p_cfg:指向 AGT 配置结构体的指针,包含定时器的初始化设置,包括计数模式、周期等。
  • 使用说明:在使用 AGT 计时或低功耗模式计数之前需要调用此函数进行初始化。
6.4.2 R_AGT_Start
  • 功能:启动 AGT 计时器。
  • 函数定义
fsp_err_t R_AGT_Start(timer_ctrl_t *const p_ctrl)
  • 参数
    • p_ctrl:指向 AGT 控制块的指针。
  • 使用说明:在完成 AGT 初始化后调用此函数开始计时。
6.4.3 R_AGT_Stop
  • 功能:停止 AGT 计时器。
  • 函数定义
fsp_err_t R_AGT_Stop(timer_ctrl_t *const p_ctrl)
  • 参数
    • p_ctrl:指向 AGT 控制块的指针。
  • 使用说明:用于临时停止计时器操作,例如在需要暂停时调用。
6.4.4 R_AGT_Reset
  • 功能:将 AGT 计时器计数器重置为零。
  • 函数定义
fsp_err_t R_AGT_Reset(timer_ctrl_t *const p_ctrl)
  • 参数
    • p_ctrl:指向 AGT 控制块的指针。
  • 使用说明:在重新开始计时或清除计时器状态时调用。
6.4.5 R_AGT_PeriodSet
  • 功能:设置 AGT 计时器的周期。
  • 函数定义
fsp_err_t R_AGT_PeriodSet(timer_ctrl_t *const p_ctrl, uint32_t const period_counts)
  • 参数
    • p_ctrl:指向 AGT 控制块的指针。
    • period_counts:计时器周期的计数值。
  • 使用说明:用于设置计时器的计时周期,以便在设定的时间间隔触发事件。
6.4.6 R_AGT_DutyCycleSet
  • 功能:设置 AGT 定时器的 PWM 占空比。
  • 函数定义
fsp_err_t R_AGT_DutyCycleSet(timer_ctrl_t *const p_ctrl, uint32_t const duty_cycle_counts, uint32_t const pin)
  • 参数
    • p_ctrl:指向 AGT 控制块的指针。
    • duty_cycle_counts:PWM 占空比的计数值。
    • pin:输出 PWM 信号的引脚编号。
  • 使用说明:用于低功耗情况下的 PWM 信号输出控制,占空比决定了信号的高低电平比例。
6.4.7 R_AGT_CompareMatchSet
  • 功能:设置 AGT 的比较匹配值。
  • 函数定义
fsp_err_t R_AGT_CompareMatchSet(timer_ctrl_t *const p_ctrl, uint32_t const compare_match_value, timer_compare_match_t const match_channel)
  • 参数
    • p_ctrl:指向 AGT 控制块的指针。
    • compare_match_value:比较匹配的计数值。
    • match_channel:指定比较匹配的通道。
  • 使用说明:用于设置定时器的比较匹配功能,用于检测特定时间的到达。
6.4.8 R_AGT_InfoGet
  • 功能:获取 AGT 的当前状态和配置信息。
  • 函数定义
fsp_err_t R_AGT_InfoGet(timer_ctrl_t *const p_ctrl, timer_info_t *const p_info)
  • 参数
    • p_ctrl:指向 AGT 控制块的指针。
    • p_info:指向用于存储 AGT 状态信息的结构体。
  • 使用说明:用于获取当前定时器的状态,包括计数值、周期等信息。
6.4.9 R_AGT_StatusGet
  • 功能:获取 AGT 的当前计数状态。
  • 函数定义
fsp_err_t R_AGT_StatusGet(timer_ctrl_t *const p_ctrl, timer_status_t *const p_status)
  • 参数
    • p_ctrl:指向 AGT 控制块的指针。
    • p_status:指向存储 AGT 状态信息的结构体,包含计数状态。
  • 使用说明:用于检查计数器的当前状态,如是否正在运行。
6.4.10 R_AGT_CallbackSet
  • 功能:设置 AGT 的回调函数,用于处理中断事件。
  • 函数定义
fsp_err_t R_AGT_CallbackSet(timer_ctrl_t *const p_api_ctrl, void(*p_callback)(void), void const *const p_context, timer_callback_args_t *const p_callback_memory)
  • 参数
    • p_api_ctrl:指向 AGT 控制块的指针。
    • p_callback:指向回调函数的指针。
    • p_context:上下文信息,用于回调中传递的用户自定义数据。
    • p_callback_memory:回调函数使用的内存。
  • 使用说明:用于注册回调函数,以处理定时器事件或中断。
6.4.11 R_AGT_Close
  • 功能:关闭 AGT 定时器模块,释放相关资源。
  • 函数定义
fsp_err_t R_AGT_Close(timer_ctrl_t *const p_ctrl)
  • 参数
    • p_ctrl:指向 AGT 控制块的指针。
  • 使用说明:在不再需要 AGT 定时器时调用此函数以释放资源。

7. 软件框架

7.1 项目目录结构介绍

在这里插入图片描述
在这里插入图片描述

e2studio 的项目目录中,各个文件夹和文件的功能如下:

  • (顶层文件夹):这是项目的根目录,项目名称为 led。所有项目相关的文件和文件夹都在此目录下。
  • 二进制:该文件夹包含项目生成的二进制文件。在此图中,可以看到一个 led.elf 文件,这是编译后生成的可执行文件,适用于 ARM 架构的芯片(此处为 arm/le 表示的架构)。
  • IncludesIncludes 文件夹包含项目中引用的头文件( .h 文件)路径。这里列出了项目所有的头文件目录,便于代码中查找和引用外部定义的符号。
  • ra:该文件夹存放了瑞萨 RA 系列微控制器的核心代码和库,通常由 e2studio 自动生成。包含以下子文件夹:
    • arm:与 ARM 架构相关的文件,包括 CMSIS(Cortex Microcontroller Software Interface Standard)库,这些文件为开发 RA 系列微控制器提供了底层支持。
    • board:包含与开发板硬件相关的配置和初始化文件,根据具体硬件平台调整各个外设的设置。
    • fsp:Flexible Software Package(FSP)的文件,FSP 是瑞萨的硬件抽象层和驱动库,提供对芯片功能的接口。
  • ra_gen:这是 e2studio 自动生成的代码文件夹,通常包含在图形化配置工具中设置的外设初始化代码。例如,GPIO、UART、I2C 等配置生成的代码会放在此目录下,每次配置更改后都会自动更新。
  • src:该文件夹是用户项目的主要代码目录,开发者可以在这里编写项目的核心应用代码和逻辑。
  • DebugDebug 文件夹用于存放调试过程中生成的文件,包括调试信息和符号表等。调试时使用的临时文件也会存放在这里。
  • buildbuild 文件夹存放项目编译过程中生成的中间文件,比如对象文件( .o 文件)和依赖文件等。它是临时生成的,可以在不影响项目的情况下删除。
  • ra_cfg:这个文件夹包含 FSP 配置文件。RA 系列微控制器的外设和资源配置会生成相关的 .xml.txt 文件,项目运行时会参考这些配置。
  • scriptscript 文件夹通常包含与构建过程相关的脚本文件,比如链接脚本和配置脚本。它可以自定义编译和链接步骤。
  • configuration.xml:项目配置文件,记录了项目的基本配置选项,包括编译和构建的设置等。
  • JLinkLog.log:这是调试工具 JLink 生成的日志文件,记录调试过程中的输出信息和日志。JLink 是一种常用的调试工具,用于 ARM 微控制器调试。
  • led Debug_Flat.jlink:JLink 的配置文件,用于控制调试会话的一些选项,比如连接方式和调试级别等。
  • led Debug_Flat.launchlaunch 配置文件,用于启动调试会话。它指定调试时使用的设备和调试工具的配置。
  • ra_cfg.txt:这是 RA 微控制器的配置文件,记录了一些关于 FSP 的配置细节,可以帮助开发环境识别和设置项目相关的芯片和配置。
  • Developer Assistance:这是 e2studio 提供的开发者辅助工具,包含一些开发过程中的帮助文档和快捷方式,便于开发者快速查找所需资源或配置。

7.2 e2 studio 透视图介绍

在这里插入图片描述

在瑞萨的 e2 studio 开发环境中,配置透视图为开发者提供了多个功能模块的便捷配置选项。各个标签页的作用如下:

  • Summary:该标签页提供了项目的总体概览,列出项目的主要配置内容和当前状态。开发者可以在这里快速查看项目的基本信息。
  • BSP (Board Support Package):BSP 标签用于配置与开发板硬件相关的设置,包括初始化代码和硬件资源。BSP 包含的内容通常涉及开发板的引脚定义、外设配置以及系统初始化过程。
  • Clocks:Clocks 标签允许用户配置系统时钟和外设时钟。开发者可以在此选择不同的时钟源并调整频率,以确保芯片的不同模块在合适的时钟频率下运行。
  • Pins:Pins 标签用于设置 RA6E2 微控制器的引脚分配。
    以在此指定每个引脚的功能和模式(如 GPIO、ADC 输入、PWM 输出等),便于硬件与软件之间的协调。
  • Interrupts:在 Interrupts 标签中,可以设置中断的优先级和触发源。开发者可以配置不同的中断服务程序以应对系统中可能发生的各种事件,从而实现系统的实时响应。
  • Event Links:Event Links 标签用于设置事件链(Event Link),即不同外设之间的事件触发机制。通过配置事件链,开发者可以在某个外设触发事件时通知其他外设,以实现模块之间的高效协作。
  • Stacks:Stacks 标签用于配置软件栈,例如 USB、文件系统和网络协议栈等。开发者可以在此添加、删除或配置所需的栈,从而扩展 RA6E2 微控制器的功能。
  • Components:Components 标签列出项目所用的组件。开发者可以在这里管理组件的添加、删除和配置,便于项目的模块化开发和扩展。
### 瑞萨MCU IIC通信配置教程 在瑞萨微控制器上实现IIC(Inter-Integrated Circuit)通信通常涉及以下几个方面:硬件引脚配置、时钟设置以及驱动程序初始化。以下是基于瑞萨MCU的IIC通信配置方法及其示例代码。 #### 1. 引脚配置 对于IIC通信,需要配置SCL(串行时钟线)和SDA(串行数据线)。每根引脚都需要通过`ioport_pin_cfg_t`结构体来定义其功能模式和其他属性[^1]。具体来说: ```c // 定义 SDA 和 SCL 的引脚配置 const ioport_pin_cfg_t sdaPinConfig = { .pin = BSP_IO_PORT_0_PIN_2, // 假设 SDA 连接到 P0.2 .direction = IO_DIRECTION_OUTPUT, .resistor = IO_RESISTOR_PULLUP, .drive_strength = IO_DRIVE_STRENGTH_HIGH }; const ioport_pin_cfg_t sclPinConfig = { .pin = BSP_IO_PORT_0_PIN_3, // 假设 SCL 连接到 P0.3 .direction = IO_DIRECTION_OUTPUT, .resistor = IO_RESISTOR_PULLUP, .drive_strength = IO_DRIVE_STRENGTH_HIGH }; ``` 上述代码片段展示了如何为SDA和SCL引脚分配特定的功能,并启用内部上拉电阻以确保信号稳定性。 --- #### 2. 初始化IIC模块 接下来,需调用相应的API函数完成IIC外设的初始化操作。以下是一个典型的初始化过程: ```c #include "r_iic_api.h" // 创建 IIC 控制实例句柄 iics_instance_ctrl_t iicCtrl; // 配置 IIC 参数 const iics_api_master_open_t openCfg = { .baudrate = 100000, // 设置波特率为 100kHz .mode = IICS_MODE_MASTER, // 主设备模式 .addressing_mode = IICS_ADDR7BIT, // 使用 7 位地址模式 .callback = NULL // 不使用回调函数 }; // 打开并初始化 IIC 外设 FSP_ERR_RETURN(IICS_MasterOpen(&g_iic0_ctrl, &openCfg), FSP_ERROR); ``` 此部分代码设置了IIC的工作频率(即波特率)、工作模式(主/从),以及其他必要选项。 --- #### 3. 数据传输 一旦完成了初始化步骤,则可以利用发送和接收函数来进行实际的数据交换。下面分别给出写入和读取的例子: ##### 发送数据到从机 ```c uint8_t slaveAddress = 0x50; // 替换为目标从设备的实际地址 uint8_t writeData[] = {0x01, 0xFF}; // 要发送给从设备的数据包 // 启动一次完整的事务处理流程 FSP_ERR_RETURN(IICS_MasterWriteRead(&g_iic0_ctrl, slaveAddress << 1 | 0, // 左移一位附加 R/W 标志 (W=0) writeData, sizeof(writeData), NULL, 0), // 此处无后续读取动作 FSP_ERROR); ``` ##### 从从机读取数据 ```c uint8_t readBuffer[16]; // 存储接收到的数据缓冲区 size_t bytesRead = 0; // 请求指定数量字节的数据 FSP_ERR_RETURN(IICS_MasterWriteRead(&g_iic0_ctrl, slaveAddress << 1 | 1, // 左移一位附加 R/W 标志 (R=1) NULL, 0, // 此次不执行任何写入 readBuffer, sizeof(readBuffer)), FSP_ERROR); bytesRead = sizeof(readBuffer); // 更新已成功获取的总长度 ``` 以上两段代码演示了向目标节点写入命令或者状态信息,同时也支持批量检索远程存储器中的内容。 --- ### 注意事项 为了保证稳定可靠的通讯连接,在设计阶段还需考虑以下几点建议: - **电平匹配**:如果两个器件之间存在电压差异,请加入合适的逻辑转换电路。 - **滤波去抖**:适当增加软件延时或采用外部RC网络减少噪声干扰。 - **错误恢复机制**:针对可能发生的仲裁丢失等问题提前规划解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值