211 lines
4.1 KiB
Plaintext
211 lines
4.1 KiB
Plaintext
/*
|
|
* VesiScan BASIC - Custom board overlay
|
|
* 프로젝트에서 사용하는 하드웨어 핀 정의
|
|
*
|
|
* Pin mapping:
|
|
* POWER_HOLD: P0.08 (output, active high - latches power)
|
|
* POWER_BTN: P1.08 (input, active low - pressed = LOW)
|
|
* LED_BLE: P0.12 (output, active low)
|
|
* LED_ORANGE: P0.29 (output, active low)
|
|
* BATT_ADC: P0.04 (AIN2, battery voltage measurement)
|
|
* IMU_SCL: P1.14 (I2C0 clock)
|
|
* IMU_SDA: P1.15 (I2C0 data)
|
|
*/
|
|
|
|
/* ADC 채널 공통 매크로 (ADC_GAIN_*, ADC_REF_*, ADC_ACQ_TIME 등) */
|
|
#include <zephyr/dt-bindings/adc/adc.h>
|
|
/* nRF SAADC 전용 매크로 (NRF_SAADC_AIN* 채널 번호 정의) */
|
|
#include <zephyr/dt-bindings/adc/nrf-saadc.h>
|
|
/* nRF 핀 컨트롤 매크로 (NRF_PSEL - I2C/SPI 등 핀 재배치에 필요) */
|
|
#include <zephyr/dt-bindings/pinctrl/nrf-pinctrl.h>
|
|
|
|
/* P0.08이 DK 기본 UART0 RX로 잡혀있어서 GPIO 출력 충돌 → 비활성화 */
|
|
&uart0
|
|
{
|
|
status = "disabled";
|
|
};
|
|
|
|
/* 실제 보드에 DK용 외부 QSPI flash가 없어서 부팅 시 probe 실패를 막음 */
|
|
&qspi
|
|
{
|
|
status = "disabled";
|
|
};
|
|
|
|
/* DK 보드 정의에 포함된 MX25R64 외부 flash도 함께 비활성화 */
|
|
&mx25r64
|
|
{
|
|
status = "disabled";
|
|
};
|
|
|
|
/* I2C0 핀 재설정: ICM42670P IMU (SCL=P1.14, SDA=P1.15) */
|
|
&i2c0_default
|
|
{
|
|
group1
|
|
{
|
|
psels = <NRF_PSEL(TWIM_SCL, 1, 14)>,
|
|
<NRF_PSEL(TWIM_SDA, 1, 15)>;
|
|
};
|
|
};
|
|
|
|
&i2c0_sleep
|
|
{
|
|
group1
|
|
{
|
|
psels = <NRF_PSEL(TWIM_SCL, 1, 14)>,
|
|
<NRF_PSEL(TWIM_SDA, 1, 15)>;
|
|
low-power-enable;
|
|
};
|
|
};
|
|
|
|
&i2c0
|
|
{
|
|
status = "okay";
|
|
clock-frequency = <I2C_BITRATE_STANDARD>;
|
|
};
|
|
|
|
/* 배터리 ADC 채널 설정 (AIN2 = P0.04) */
|
|
&adc
|
|
{
|
|
status = "okay";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
/* 배터리 전압 측정 채널
|
|
* 1/6 gain + 0.6V 내부 레퍼런스 → 풀스케일 3.6V
|
|
* 12bit 해상도, 4X 오버샘플링, 40us 샘플링 */
|
|
channel@2
|
|
{
|
|
reg = <2>;
|
|
zephyr,gain = "ADC_GAIN_1_6";
|
|
zephyr,reference = "ADC_REF_INTERNAL";
|
|
zephyr,acquisition-time = <ADC_ACQ_TIME(ADC_ACQ_TIME_MICROSECONDS, 40)>;
|
|
zephyr,input-positive = <NRF_SAADC_AIN2>;
|
|
zephyr,resolution = <12>;
|
|
zephyr,oversampling = <2>; /* 2^2 = 4X */
|
|
};
|
|
|
|
};
|
|
|
|
/* P0.04(AIN2)가 DK Arduino 헤더에 GPIO로 잡혀있어서 SAADC 충돌 → 비활성화 */
|
|
&arduino_adc
|
|
{
|
|
status = "disabled";
|
|
};
|
|
|
|
/ {
|
|
/* ADC 채널을 코드에서 참조하기 위한 zephyr,user 노드 */
|
|
zephyr,user
|
|
{
|
|
io-channels = <&adc 2>;
|
|
io-channel-names = "battery";
|
|
};
|
|
|
|
led
|
|
{
|
|
compatible = "gpio-leds";
|
|
|
|
LED_BLE: LED_BLE
|
|
{
|
|
gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
|
|
label = "Green LED";
|
|
};
|
|
|
|
FUNCTION_LED: FUNCTION_LED
|
|
{
|
|
gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
|
|
label = "Orange LED";
|
|
};
|
|
};
|
|
|
|
pin
|
|
{
|
|
compatible = "gpio-keys";
|
|
|
|
PWR_HOLD: PWR_HOLD
|
|
{
|
|
gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
|
|
label = "Power Hold Latch";
|
|
};
|
|
|
|
BUTTON_CHECK: BUTTON_CHECK
|
|
{
|
|
gpios = <&gpio1 8 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
|
|
label = "Power Button";
|
|
};
|
|
|
|
/* 피에조 TX/RX 전원 레일 제어
|
|
* HIGH = 전원 ON, LOW = 전원 OFF */
|
|
PIEZO_PWR: PIEZO_PWR
|
|
{
|
|
gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
|
|
label = "Piezo Power Enable";
|
|
};
|
|
|
|
PIEZO_PE: PIEZO_PE
|
|
{
|
|
gpios = <&gpio0 25 GPIO_ACTIVE_HIGH>;
|
|
label = "Piezo Pulse Enable";
|
|
};
|
|
|
|
PIEZO_P_OUT: PIEZO_P_OUT
|
|
{
|
|
gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
|
|
label = "Piezo P Out";
|
|
};
|
|
|
|
PIEZO_N_OUT: PIEZO_N_OUT
|
|
{
|
|
gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
|
|
label = "Piezo N Out";
|
|
};
|
|
|
|
PIEZO_DMP: PIEZO_DMP
|
|
{
|
|
gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
|
|
label = "Piezo Dump";
|
|
};
|
|
|
|
MUX_EN_A: MUX_EN_A
|
|
{
|
|
gpios = <&gpio0 21 GPIO_ACTIVE_HIGH>;
|
|
label = "Mux Enable A";
|
|
};
|
|
|
|
MUX_EN_B: MUX_EN_B
|
|
{
|
|
gpios = <&gpio0 23 GPIO_ACTIVE_HIGH>;
|
|
label = "Mux Enable B";
|
|
};
|
|
|
|
MUX_SEL0: MUX_SEL0
|
|
{
|
|
gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
|
|
label = "Mux Select 0";
|
|
};
|
|
|
|
MUX_SEL1: MUX_SEL1
|
|
{
|
|
gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>;
|
|
label = "Mux Select 1";
|
|
};
|
|
|
|
ECHO_SCLK: ECHO_SCLK
|
|
{
|
|
gpios = <&gpio0 14 0>;
|
|
label = "Echo ADC SCLK";
|
|
};
|
|
|
|
ECHO_MISO: ECHO_MISO
|
|
{
|
|
gpios = <&gpio0 15 0>;
|
|
label = "Echo ADC MISO";
|
|
};
|
|
|
|
ECHO_CS: ECHO_CS
|
|
{
|
|
gpios = <&gpio0 19 GPIO_ACTIVE_LOW>;
|
|
label = "Echo ADC CS";
|
|
};
|
|
};
|
|
};
|