本文介绍了 RA6E2 地奇星开发板通过 ADC 读取 TEMT6000 传感器数据,实现串口打印环境光照强度的项目设计。
RA6E2 地奇星是一款基于100MHz Arm® Cortex®-M33 内核架构的核心板,主控芯片为 R7FA6E2BB3CNE;
项目包括
包括 JLINK 调试器、DHT11 模块、串口模块。
| RA6E2 | J-Link | Note |
|---|---|---|
| SWCLK | SCL | Serial Clock |
| SWDIO | SDA | Serial Data |
| GND | GND | Ground |
| 3V3 | 3V3 | Power |
| RA6E2 | TEMT6000 | Note |
|---|---|---|
| P000 | OUT | Analog Output |
| 3V3 | VCC | Power |
| GND | GND | Ground |
| RA6E2 | J-Link | Note |
|---|---|---|
| TXD (P109) | RX | Transmit |
| RXD (P110) | TX | Receive |
| GND | GND | Ground |

动态展示见顶部视频。
介绍了板载 USB 串口打印字符串的项目设计,以测试 UART 输出功能。
文件 - 新建 - 瑞萨 C/C++ 项目 - Renesas RA ;R7FA6E2BB3CNE ,工具链选择 GNU ARM Embedded ,调试器选择 J-Link ;New Stack - Connectivity - UART (r_sci_uart) ;user_uart_callback 设置;0x2000 ;Generate Project Content 按钮,生成工程代码。详见:【瑞萨RA6E2】ADC 电压温度计 .
在完成前面关于 UART 串口创建的基础上,进一步实现 ADC 项目的添加。
New Stack - Analog - ADC (r_adc) ;属性配置
ADC 及串口配置完成后,
Generate Project Content ,构建工程。修改 .../src/hal_entry.c 主程序,代码如下
#include "hal_data.h"
fsp_err_t err = FSP_SUCCESS;
volatile bool uart_send_complete_flag = false;
void user_uart_callback (uart_callback_args_t * p_args)
{
if(p_args->event == UART_EVENT_TX_COMPLETE)
{
uart_send_complete_flag = true;
}
}
/*------------- UART redirection printf -------------*/
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#endif
PUTCHAR_PROTOTYPE
{
err = R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)&ch, 1);
if(FSP_SUCCESS != err) __BKPT();
while(uart_send_complete_flag == false){}
uart_send_complete_flag = false;
return ch;
}
int _write(int fd,char *pBuffer,int size)
{
for(int i=0;i<size;i++)
{
__io_putchar(*pBuffer++);
}
return size;
}
/*------------- ADC callback -------------*/
volatile bool scan_complete_flag = false;
void adc_callback (adc_callback_args_t * p_args)
{
FSP_PARAMETER_NOT_USED(p_args);
scan_complete_flag = true;
}
void hal_entry(void)
{
/* TODO: add your own code here */
/* Open the transfer instance with initial configuration. */
err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
assert(FSP_SUCCESS == err);
/* Initializes the module. */
err = R_ADC_Open(&g_adc0_ctrl, &g_adc0_cfg);
/* Handle any errors. This function should be defined by the user. */
assert(FSP_SUCCESS == err);
/* Enable channels. */
err = R_ADC_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_cfg);
assert(FSP_SUCCESS == err);
while(1)
{
uint16_t adc_data0=0;
/* Enable scan triggering from ELC events. */
(void) R_ADC_ScanStart(&g_adc0_ctrl);
scan_complete_flag = false;
while (!scan_complete_flag)
{
/* Wait for callback to set flag. */
}
err = R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_0, &adc_data0);
assert(FSP_SUCCESS == err);
printf("P000(AN0)=%d\\n",adc_data0);
R_BSP_SoftwareDelay (1000, BSP_DELAY_UNITS_MILLISECONDS);
}
}
保存代码,编译工程并调试。

TEMT6000 环境光(可见光)传感器,对可见光照度的反应特性与人眼的特性类似,可以模拟人对环境光线的强度的判断,从而方便做出与人友好互动的应用。

通过 RA6E2 板载 ADC 功能读取 TEMT6000 模块模拟输出引脚的电压,获取环境光强度。

while(1)
{
uint16_t adc_raw=0;
int32_t temp_c = get_temperature_c();
float volt=0;
/* Enable scan triggering from ELC events. */
(void) R_ADC_ScanStart(&g_adc0_ctrl);
scan_complete_flag = false;
while (!scan_complete_flag)
{
/* Wait for callback to set flag. */
}
err = R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_0, &adc_raw);
assert(FSP_SUCCESS == err);
volt = (float)(adc_raw *3.3/4096);
printf("P000(AN0) = %d, Temp: %ld ℃, Voltage: %.2f\\n", adc_raw, temp_c, volt);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_02, BSP_IO_LEVEL_HIGH);
R_BSP_SoftwareDelay (50, BSP_DELAY_UNITS_MILLISECONDS);
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_02, BSP_IO_LEVEL_LOW);
R_BSP_SoftwareDelay (950, BSP_DELAY_UNITS_MILLISECONDS);
}
保存代码,编译工程并调试。

动态效果见底部视频。
本文介绍了 RA6E2 地奇星开发板通过 ADC 读取 TEMT6000 传感器数据,实现串口打印环境光照强度的项目设计,为相关产品的快速开发和应用设计提供了参考。
更多回帖