기타등등

This commit is contained in:
2026-06-11 17:48:35 +09:00
parent d7c5b34da3
commit 1f7436e27d
14 changed files with 714 additions and 124 deletions
+26 -13
View File
@@ -87,7 +87,8 @@ static inline void nop_delay_14(void)
static inline void nop_delay_32(void)
{
for (int i = 0; i < 32; i++) {
for (int i = 0; i < 32; i++)
{
burst_nop();
}
}
@@ -107,23 +108,28 @@ static void piezo_drive_idle(void)
int piezo_init(void)
{
if (piezo_initialized) {
if (piezo_initialized)
{
return 0;
}
const struct gpio_dt_spec *pins[] = {
const struct gpio_dt_spec *pins[] =
{
&piezo_pwr, &piezo_pe, &piezo_p_out, &piezo_n_out,
&piezo_dmp, &mux_en_a, &mux_en_b, &mux_sel0, &mux_sel1
};
for (size_t i = 0; i < ARRAY_SIZE(pins); i++) {
if (!device_is_ready(pins[i]->port)) {
for (size_t i = 0; i < ARRAY_SIZE(pins); i++)
{
if (!device_is_ready(pins[i]->port))
{
DBG_PRINTF("[PIEZO] GPIO device not ready (%d)\r\n", (int)i);
return -ENODEV;
}
int err = gpio_pin_configure_dt(pins[i], GPIO_OUTPUT_INACTIVE);
if (err) {
if (err)
{
DBG_PRINTF("[PIEZO] GPIO init fail idx=%d err=%d\r\n", (int)i, err);
return err;
}
@@ -146,7 +152,8 @@ int piezo_init(void)
void piezo_power_on(void)
{
if (!piezo_initialized && piezo_init() != 0) {
if (!piezo_initialized && piezo_init() != 0)
{
return;
}
@@ -155,7 +162,8 @@ void piezo_power_on(void)
void piezo_power_off(void)
{
if (!piezo_initialized && piezo_init() != 0) {
if (!piezo_initialized && piezo_init() != 0)
{
return;
}
@@ -165,14 +173,17 @@ void piezo_power_off(void)
int piezo_select_channel(uint8_t channel)
{
if (!piezo_initialized) {
if (!piezo_initialized)
{
int err = piezo_init();
if (err) {
if (err)
{
return err;
}
}
if (channel >= PIEZO_NUM_CHANNELS) {
if (channel >= PIEZO_NUM_CHANNELS)
{
return -EINVAL;
}
@@ -187,7 +198,8 @@ int piezo_select_channel(uint8_t channel)
void piezo_burst_sw(uint8_t cycles)
{
if (!piezo_initialized || cycles == 0U) {
if (!piezo_initialized || cycles == 0U)
{
return;
}
@@ -203,7 +215,8 @@ void piezo_burst_sw(uint8_t cycles)
NRF_P1->OUT = p1_all_low;
NRF_P0->OUTSET = piezo_pe_mask;
for (uint8_t i = 0; i < cycles; i++) {
for (uint8_t i = 0; i < cycles; i++)
{
NRF_P1->OUT = p1_p_high_n_low;
nop_delay_14();