Merge branch 'fix/spi_master_dio_qio_hal' into 'master'
spi_master: fix the dual/quad io issue See merge request idf/esp-idf!4894
This commit is contained in:
commit
db86b31ef4
2 changed files with 6 additions and 5 deletions
|
@ -647,7 +647,9 @@ static void SPI_MASTER_ISR_ATTR spi_new_trans(spi_device_t *dev, spi_trans_priv_
|
||||||
|
|
||||||
trans = trans_buf->trans;
|
trans = trans_buf->trans;
|
||||||
host->cur_cs = dev_id;
|
host->cur_cs = dev_id;
|
||||||
//We should be done with the transmission.
|
|
||||||
|
//Reconfigure according to device settings, the function only has effect when the dev_id is changed.
|
||||||
|
spi_setup_device(host, dev_id);
|
||||||
|
|
||||||
hal->tx_bitlen = trans->length;
|
hal->tx_bitlen = trans->length;
|
||||||
hal->rx_bitlen = trans->rxlength;
|
hal->rx_bitlen = trans->rxlength;
|
||||||
|
@ -683,8 +685,6 @@ static void SPI_MASTER_ISR_ATTR spi_new_trans(spi_device_t *dev, spi_trans_priv_
|
||||||
hal->dummy_bits = dev->cfg.dummy_bits;
|
hal->dummy_bits = dev->cfg.dummy_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Reconfigure according to device settings, the function only has effect when the dev_id is changed.
|
|
||||||
spi_setup_device(host, dev_id);
|
|
||||||
spi_hal_setup_trans(hal);
|
spi_hal_setup_trans(hal);
|
||||||
spi_hal_prepare_data(hal);
|
spi_hal_prepare_data(hal);
|
||||||
|
|
||||||
|
|
|
@ -41,11 +41,12 @@ void spi_hal_setup_trans(const spi_hal_context_t *hal)
|
||||||
{
|
{
|
||||||
spi_dev_t *hw = hal->hw;
|
spi_dev_t *hw = hal->hw;
|
||||||
|
|
||||||
|
//clear int bit
|
||||||
spi_ll_clear_int_stat(hal->hw);
|
spi_ll_clear_int_stat(hal->hw);
|
||||||
|
//We should be done with the transmission.
|
||||||
assert(spi_ll_get_running_cmd(hw) == 0);
|
assert(spi_ll_get_running_cmd(hw) == 0);
|
||||||
|
|
||||||
//clear int bit
|
spi_ll_master_set_io_mode(hw, hal->io_mode);
|
||||||
spi_ll_master_set_io_mode(hw, SPI_LL_IO_MODE_NORMAL);
|
|
||||||
|
|
||||||
int extra_dummy = 0;
|
int extra_dummy = 0;
|
||||||
//when no_dummy is not set and in half-duplex mode, sets the dummy bit if RX phase exist
|
//when no_dummy is not set and in half-duplex mode, sets the dummy bit if RX phase exist
|
||||||
|
|
Loading…
Reference in a new issue