Commit Graph

1068 Commits

Author SHA1 Message Date
Darian Leung f3a8a911c0 twai: Add errata workaround for listen only mode
This commit adds a workaround for the TWAI listen only mode errata which is
present on the ESP32, ESP32-S2, ESP32-S3, and ESP32-C3. twai_get_status_info()
has also been updated to account for the fact that TEC/REC are frozen in
listen only mode.

Errata Description:

When the TWAI controller is put into listen only mode, it should not influence
the TWAI bus in any way (i.e., should never send a dominant bit). However,
on the targets listed above, the TWAI controller will send dominant bits in an
error frame (i.e., active error frame), even if the controller is set to listen
only mode.

Workaround:

We can force the TWAI controller into the error passive state on startup (by
setting the REC to >= 128). Since the TEC/REC are frozen in listen only mode,
the TWAI controller will remain error passive and only send recessive bits
(i.e., passive error frames), thus will not influence the TWAI bus.

Closes https://github.com/espressif/esp-idf/issues/9157
2023-02-24 20:38:37 +08:00
wanlei e08bbd311f spi_slave: fix slave can't use iomux bus mixed with gpio cs_pin 2022-12-01 20:36:14 +08:00
Michael (XIAO Xufeng) 934f99710b Merge branch 'bugfix/fix_uart_fake_tx_done_v4.2' into 'release/v4.2'
uart: Fix unwanted processing of TX_DONE interrupt immediately after calling uart_wait_tx_done() (backport v4.2)

See merge request espressif/esp-idf!20315
2022-10-31 16:16:46 +08:00
Cao Sen Miao 9a59ed4b7a I2C: patch for solving watchdog timeout issue 2022-10-10 11:05:25 +08:00
Song Ruo Jing 0f051a5e3b uart: Fix unwanted processing of TX_DONE interrupt immediately after calling uart_wait_tx_done()
In previous transmission(s), the TX_DONE interrupt raw bit may be raised, but never been cleared.
TX_DONE interrrupt status bit should be cleared before enabling it to check the new transmission.

Introduced in 239e56541c
2022-09-23 16:24:30 +08:00
morris 04f2766b3e Merge branch 'bugfix/fix_spi_bus_lock_concurrency_issue_v4.2' into 'release/v4.2'
spi_bus_lock: fix a concurrency issue (v4.2)

See merge request espressif/esp-idf!20140
2022-09-22 13:30:47 +08:00
morris 949d7da779 Merge branch 'bugfix/driver_rs485_fix_test_sync_issues_v42' into 'release/v4.2'
driver: uart rs485 fix test sync issues and fail threshold (backport v4.2)

See merge request espressif/esp-idf!19615
2022-09-15 15:23:21 +08:00
Alex Lisitsyn 3c67e26dce driver: uart rs485 fix test sync issues and fail threshold (backport v4.2) 2022-09-15 15:23:21 +08:00
Armando 19098d3eb0 SPI_BUS_LOCK: fix a concurrency issue
define: lock_bits = (lock->status & LOCK_MASK) >> LOCK_SHIFT;  This `lock_bits` is the Bit 29-20 of the lock->status

1. spi_hdl_1:
   acquire_end_core():
   uint32_t status = lock_status_clear(lock, dev_handle->mask & LOCK_MASK);
   Becuase this is the first `spi_hdl_1`, so after this , lock_bits == 0`b0. status == 0

2. spi_hdl_2:
   acquire_core:
   uint32_t status = lock_status_fetch_set(lock, dev_handle->mask & LOCK_MASK);
   Then here status is 0`b0, but lock_bits == 0`b10. Because this is the `spi_hdl_2`

3. spi_hdl_2:
   `acquire_core` return true, because status == 0. `spi_bus_lock_acquire_start(spi_hdl_2)` then won't block.

4. spi_hdl_2:
   spi_device_polling_end(spi_hdl_2).

5. spi_hdl_1:
   acquire_end_core:
   status is 0, so it cleas the lock->acquiring_dev

6. spi_hdl_2:
   spi_device_polling_end:
   assert(handle == get_acquiring_dev(host)); Fail

Closes https://github.com/espressif/esp-idf/issues/8179
2022-09-14 12:15:06 +08:00
Ivan Grokhotkov ed22f22632 Merge branch 'bugfix/spi_slave_intr_iram_v4.2' into 'release/v4.2'
driver: spi_slave: make sure CS helpers are in IRAM if the ISR is (v4.2)

See merge request espressif/esp-idf!17833
2022-09-13 16:28:14 +08:00
Omar Chebib 17a5d4aff7 I2C: Fix a bug making the I2C task wait too long on an event
The I2C ISR will now notify the task waiting on an event. Thus, the task can stop waiting on the event queue as soon as possible.
2022-08-17 17:39:10 +08:00
Ivan Grokhotkov 5a65ac50e0 driver: spi_slave: make sure CS helpers are in IRAM if the ISR is
Closes https://github.com/espressif/esp-idf/issues/3870
2022-08-08 10:34:09 +02:00
xiongweichao 06d169e518 Update the note of the gpio_intr_enable function 2022-07-26 12:39:42 +00:00
Alex Lisitsyn eaf03e06d5 modbus: fix esp restart does not reset timer groups periph (backport v4.2) 2022-07-11 16:42:42 +08:00
Jiang Jiang Jian b6b7a59958 Merge branch 'bugfix/twai_esp32_errata_workarounds_backport_v4.2' into 'release/v4.2'
TWAI: Add FIFO overrun handling and ESP32 hardware errata workarounds + Refactor TWAI HAL to store state information  (backport v4.2)

See merge request espressif/esp-idf!17106
2022-05-19 10:55:59 +08:00
Jiang Jiang Jian b74fc002f1 Merge branch 'bugfix/driver_uart_fix_tx_bytes_rts_assert_failure_v42' into 'release/v4.2'
driver: fixes context switch while sending cause rts reset before send (backport v4.2)

See merge request espressif/esp-idf!17942
2022-05-19 10:55:36 +08:00
Alex Lisitsyn 721e26019e driver: fixes context switch while sending cause rts reset before send (backport v4.2) 2022-05-19 10:55:35 +08:00
morris d0db75899d Merge branch 'bugfix/ledc_consecutive_fade_v4.2' into 'release/v4.2'
ledc: Bugfixes for issues related to fade protection (backport v4.2)

See merge request espressif/esp-idf!16955
2022-05-07 18:24:45 +08:00
Michael (XIAO Xufeng) 5edd6a4ddf spi_master: fix the error log when use tx/rx_data with larger data 2022-04-18 15:15:06 +08:00
Michael (XIAO Xufeng) 396159299c Merge branch 'bugfix/gpio_pin_num_fix_v4.2' into 'release/v4.2'
gpio: Fix some gpio pin num errors on esp32s2 (backport v4.2)

See merge request espressif/esp-idf!17110
2022-04-18 14:49:52 +08:00
Michael (XIAO Xufeng) 69c95bf983 Merge branch 'bugfix/spi_free_crash_uninitialized_v4.2' into 'release/v4.2'
spi: fixed crash when calling spi_bus_free when not initialized (v4.2)

See merge request espressif/esp-idf!17610
2022-04-01 11:17:54 +08:00
chaijie b2e08332e3 ESP32: Fix xtal 32k not oscillate or oscillate too slowly issue
ESP32 in revision0 and revision1 uses touchpad to provide
current to oscillate xtal 32k. But revision2 and revision3
do not need to do that.
Note: touchpad can not work and toupad/ULP wakeup sources
are not available when toupad provides current to xtal 32k
2022-03-30 15:27:03 +08:00
songruojing 9e79d0e06f ledc: Fix FADE_NO_WAIT mode concurrency problem.
Add test cases for fade concurrency issue and fade timing check.

Closes https://github.com/espressif/esp-idf/issues/6710

(cherry picked from commit be2ab09832)
2022-03-29 03:42:06 +00:00
songruojing 01547c4bd8 ledc: Simplify the procedure to perform a one-time duty update
Avoid adding one extra fade cycle when performing a one-time duty update.
Add some notes to ledc_get_duty and ledc_update_duty APIs, so that users
are aware of when the new duty will be effective.

Closes https://github.com/espressif/esp-idf/issues/7288

(cherry picked from commit e175086226)
2022-03-29 03:42:06 +00:00
songruojing 4c267ef0a6 gpio: Fix some gpio pin num errors on esp32s2 2022-03-29 03:40:54 +00:00
Michael (XIAO Xufeng) 49231ae961 spi: fixed crash when calling spi_bus_free when not initialized
introduced in 49a48644e4

Closes: https://github.com/espressif/esp-idf/issues/8642
2022-03-27 02:41:09 +08:00
Michael (XIAO Xufeng) 6c21202065 Merge branch 'fix/sdio_slave_recv_intr_unhandled_v4.2' into 'release/v4.2'
sdio_slave: fixed the issue that interrupt may be cleared with finished trans unhandled (v4.2)

See merge request espressif/esp-idf!17150
2022-03-15 22:06:19 +08:00
laokaiyao 0c71604b80 i2s: fix write failure issue in slave mode (backport v4.2) 2022-03-03 15:16:53 +08:00
Darian Leung a0666b9be8 TWAI: FIFO overrun handling and errata workarounds
This commit adds handling for FIFO overruns and
adds workarounds for HW erratas on the ESP32.

Closes https://github.com/espressif/esp-idf/issues/2519
Closes https://github.com/espressif/esp-idf/issues/4276
2022-02-15 14:16:53 +08:00
Darian Leung 90ee294139 TWAI: Track HW state in HAL
This commit refactors the TWAI HAL such that it now tracks
the harwdare's state instead of at the driver layer.
Some HAL and LL cleanup was also done.
2022-02-15 14:16:53 +08:00
Zim Kalinowski 15a20d8100 Merge branch 'bugfix/sdio_slave_dma_desc_int_v4.2' into 'release/v4.2'
sdio_slave: Fixed the issue that DMA descriptors allocated to non-DMA capable area (v4.2)

See merge request espressif/esp-idf!17139
2022-02-15 03:38:38 +00:00
Michael (XIAO Xufeng) aed907c728 sdio_slave: fixed the issue that interrupt may be cleared with finished trans unhandled 2022-02-15 00:01:46 +08:00
Michael (XIAO Xufeng) dbf33d7947 sdio_slave: fixed the issue DMA desc not capable 2022-02-14 12:57:57 +08:00
morris c7b5d3494c rmt: do not support rx wrap on esp32s2
Closes https://github.com/espressif/esp-idf/issues/8354
2022-02-13 12:20:20 +08:00
Ivan Grokhotkov dd67f769d9 driver: add diagnostic information into UART test, enable flow control 2022-02-11 13:47:06 +08:00
Jiang Jiang Jian 9bf6cf5ed4 Merge branch 'bugfix/alarm_update_invalid_v4.2' into 'release/v4.2'
timer: stop alarm if alarm value doesn't change in ISR callback (v4.2)

See merge request espressif/esp-idf!16534
2022-01-14 03:04:36 +00:00
Jiang Jiang Jian 6683751579 Merge branch 'bugfix/gpio_uninstall_isr_service_intr_wdt_crash_v4.2' into 'release/v4.2'
gpio: Bugfix - Move esp_intr_free() out of the critical section in gpio_uninstall_isr_service() (backport v4.2)

See merge request espressif/esp-idf!16597
2022-01-14 03:04:15 +00:00
Roland Dobai 698efba393 Merge branch 'bugfix/fix_modbus_rs485_rts_en_fail_v42' into 'release/v4.2'
Bugfix/fix modbus rs485 rts en fail (backport v4.2)

See merge request espressif/esp-idf!11566
2022-01-12 08:44:05 +00:00
Krzysztof Budzynski 476a0eb26d Merge branch 'fix/remove_deprecated_macro_SPI_TRANS_SET_CD_v4.2' into 'release/v4.2'
Remove a deprecated macro: SPI_TRANS_SET_CD (v4.2)

See merge request espressif/esp-idf!16690
2022-01-12 05:50:53 +00:00
aleks 239e56541c freemodbus: fix uart_wait_tx_done() reenable tx_done interrupt 2022-01-07 16:45:47 +00:00
Wang Fang fec6e140fb fix: remove a deprecated macro: SPI_TRANS_SET_CD 2022-01-07 16:39:31 +08:00
Armando a129933ccd adc: apply adc power API to adc driver 2022-01-06 11:42:55 +08:00
songruojing 7ef8012019 gpio: Bugfix - Move esp_intr_free() out of the critical section in gpio_uninstall_isr_service()
Closes https://github.com/espressif/esp-idf/issues/5571

Fix the bug that if the API was called from one core to free the interrupt source on the other core, it would trigger interrupt watchdog.

(cherry picked from commit 0e8286c57b)
2021-12-30 14:45:13 +08:00
morris 93c784e1c8 timer: stop alarm if alarm value doesn't change in ISR handler
Alarm will be disabled by hardware when alarm event happend.
In the ISR, if auto-reload is enabled, we should re-enable the alarm.
If the alarm target value is changed in user's callback,
the alarm will be reenabled as well.

Closes https://github.com/espressif/esp-idf/issues/7001
Closes https://github.com/espressif/esp-idf/issues/8095
2021-12-24 13:08:33 +08:00
morris 9b6d4c4015 uart: support alloc driver object in SRAM
If CONFIG_UART_ISR_IN_IRAM is on, which means user hope the uart
interrupt can still be serviced even when cache is diabled (e.g.
writing to flash). In that case, the driver should make sure to
put the all related objects into SRAM, avoid putting them in the PSRAM.

Closes https://github.com/espressif/esp-idf/issues/7044
Closes https://github.com/espressif/esp-idf/pull/7355
2021-09-22 12:01:04 +08:00
morris 5253a6c916 uart: format driver code by astyle 2021-09-22 12:01:04 +08:00
Omar Chebib 60ce887308 uart: cleaner way of handling error in a critical section
Some critical sections have also been added, making the code more
symetric accross the similar functions.

Closes https://github.com/espressif/esp-idf/pull/6396
2021-09-03 15:20:33 +08:00
Luca Burelli 3691fb9f48 uart: Add missing critical section wrappers around rx_buffered_len
The missing barriers caused uart_get_buffered_data_len() to (very rarely)
return a garbage value. When used in MicroPython, though, this caused
select() to return and a subsequent read() to stall indefinitely until
a char was actually available.

Signed-off-by: Chen Yi Qun <chenyiqun@espressif.com>

Closes https://github.com/espressif/esp-idf/issues/6397
Merges https://github.com/espressif/esp-idf/pull/6396
2021-09-03 15:20:33 +08:00
Michael (XIAO Xufeng) d91d6945d7 spi_master: fix the crash when using interrupt mode when cache is disabled
Closes https://github.com/espressif/esp-idf/issues/6529
Closes https://github.com/espressif/esp-idf/issues/6781
Closes https://github.com/espressif/esp-idf/issues/7368
2021-08-06 12:22:15 +08:00
Marius Vikhammer 2f02863fff uart: fix typo in error message
Closes https://github.com/espressif/esp-idf/issues/7360
2021-08-03 09:28:39 +08:00