From cfe55c5e23bbcdf07ba2f5ae98cc28afb2ad9bde Mon Sep 17 00:00:00 2001 From: Roy_01 Date: Wed, 24 Jan 2024 17:26:33 +0800 Subject: [PATCH] fix: code go to breaking point during I2C initialization 1. do nothing when i2c transfer completed 2. take away virtual_data 3. spi frequency change to 8M --- i2c.c | 19 +------------------ spi.c | 17 +++-------------- 2 files changed, 4 insertions(+), 32 deletions(-) diff --git a/i2c.c b/i2c.c index d3b7d31..fd80ff6 100644 --- a/i2c.c +++ b/i2c.c @@ -22,17 +22,6 @@ void nrf_drv_twi_evt_handler(nrf_drv_twi_evt_t const *p_event, void *p_context) portYIELD_FROM_ISR(xHigherPriorityTaskWoken); } -static void virtual_data(uint8_t *p_rx_buf, uint8_t rx_buffer_length) -{ - uint8_t virtual_data_buff[20] = { 9, 8, 7, 6, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 }; - if (rx_buffer_length == 0) - return; - - memcpy(p_rx_buf, virtual_data_buff, rx_buffer_length); -} - -void twi0_write_reg(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data, uint8_t data_len); - void twi0_init(void) { ret_code_t err_code; @@ -53,9 +42,6 @@ void twi0_init(void) APP_ERROR_CHECK(err_code); nrf_drv_twi_enable(&twi0); - - uint8_t buf[8]; - twi0_write_reg(0xAA, 0x01, buf, 8); } void twi0_write_reg(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data, uint8_t data_len) @@ -79,7 +65,6 @@ void twi0_write_reg(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data, uint8_t /* Transfer completed event. */ case NRF_DRV_TWI_EVT_DONE: // TODO... - __BKPT(255); break; /* Error event: NACK received after sending the address. */ case NRF_DRV_TWI_EVT_ADDRESS_NACK: @@ -99,7 +84,7 @@ void twi0_write_reg(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data, uint8_t xSemaphoreGive(i2c_mutex); NRF_LOG_INFO("i2c(W): slave_addr=0x%02x", slave_addr); - NRF_LOG_HEXDUMP_INFO(i2c_buf, sizeof(i2c_buf)); + NRF_LOG_HEXDUMP_INFO(i2c_buf, data_len + 1); } void twi0_read_reg(uint8_t slave_addr, uint8_t reg_addr, uint8_t *p_rx_buf, uint8_t rx_buffer_length) @@ -118,7 +103,6 @@ void twi0_read_reg(uint8_t slave_addr, uint8_t reg_addr, uint8_t *p_rx_buf, uint /* Transfer completed event. */ case NRF_DRV_TWI_EVT_DONE: // TODO... - __BKPT(255); break; /* Error event: NACK received after sending the address. */ case NRF_DRV_TWI_EVT_ADDRESS_NACK: @@ -143,7 +127,6 @@ void twi0_read_reg(uint8_t slave_addr, uint8_t reg_addr, uint8_t *p_rx_buf, uint /* Transfer completed event. */ case NRF_DRV_TWI_EVT_DONE: // TODO... - __BKPT(255); break; /* Error event: NACK received after sending the address. */ case NRF_DRV_TWI_EVT_ADDRESS_NACK: diff --git a/spi.c b/spi.c index e3484fc..8c480ab 100644 --- a/spi.c +++ b/spi.c @@ -60,7 +60,7 @@ void spi_init(void) spi1_config.mosi_pin = SPI1_MOSI_PIN; spi1_config.sck_pin = SPI1_CLK_PIN; spi1_config.mode = NRF_DRV_SPI_MODE_1; - spi1_config.frequency = NRF_DRV_SPI_FREQ_1M; + spi1_config.frequency = NRF_DRV_SPI_FREQ_8M; APP_ERROR_CHECK(nrf_drv_spi_init(&spim1, &spi1_config, nrf_drv_spim1_evt_handler, NULL)); nrf_drv_spi_config_t spi2_config = NRF_DRV_SPI_DEFAULT_CONFIG; @@ -69,7 +69,7 @@ void spi_init(void) spi2_config.mosi_pin = SPI2_MOSI_PIN; spi2_config.sck_pin = SPI2_CLK_PIN; spi2_config.mode = NRF_DRV_SPI_MODE_1; - spi2_config.frequency = NRF_DRV_SPI_FREQ_1M; + spi2_config.frequency = NRF_DRV_SPI_FREQ_8M; APP_ERROR_CHECK(nrf_drv_spi_init(&spim2, &spi2_config, nrf_drv_spim2_evt_handler, NULL)); } @@ -79,15 +79,6 @@ void spi1_write(uint8_t *p_tx_buffer, uint8_t tx_buffer_length) xSemaphoreTake(spim1_sem, portMAX_DELAY); } -static void virtual_data(uint8_t *p_rx_buf, uint8_t rx_buffer_length) -{ - uint8_t virtual_data_buff[20] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 }; - if (rx_buffer_length == 0) - return; - - memcpy(p_rx_buf, virtual_data_buff, rx_buffer_length); -} - void spi2_write(uint32_t cs_pin, uint8_t *p_tx_buffer, uint8_t tx_buffer_length, uint8_t *p_rx_buf, uint8_t rx_buffer_length) { xSemaphoreTake(spim2_mutex, portMAX_DELAY); @@ -97,7 +88,7 @@ void spi2_write(uint32_t cs_pin, uint8_t *p_tx_buffer, uint8_t tx_buffer_length, APP_ERROR_CHECK(nrf_drv_spi_transfer(&spim2, p_tx_buffer, tx_buffer_length, p_rx_buf, rx_buffer_length)); if (xSemaphoreTake(spim2_sem, pdMS_TO_TICKS(100)) == pdFALSE) { - // TODO... spi treansfer timeout. + // TODO... spi transfer timeout. } nrf_gpio_pin_set(cs_pin); @@ -107,8 +98,6 @@ void spi2_write(uint32_t cs_pin, uint8_t *p_tx_buffer, uint8_t tx_buffer_length, NRF_LOG_INFO("spi(W)"); NRF_LOG_HEXDUMP_INFO(p_tx_buffer, tx_buffer_length); - // virtual_data(p_rx_buf, rx_buffer_length); - if (rx_buffer_length > 0) { NRF_LOG_INFO("spi(R)");