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
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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)");
|
||||
|
||||
Reference in New Issue
Block a user