기타등등
This commit is contained in:
+26
-13
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user