Ambiq apollo3 fix of an SPI related SD bug #13861
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary of changes
While trying to implement SD functionality on the Artemis Thing Plus board i discovered that SDBlockDevice::program() fails for that target. After some investigation i found the root of the issue in spi_api.c for this target. Modifications:
spi_master_write()
spi_master_block_write()
has been called with a hard-coded 0x00 fill character before, now it is changed to SPI_FILL_CHAR to be in synch with the fill char set in the Mbed configuration.spi_master_block_write()
previously it called am_hal_iom_blocking_transfer on line 182, but that prevented succesful SD card writing operations. This PR also changes that part to am_hal_iom_spi_blocking_fullduplex and SD functionality seems to be working.Impact of changes
Enables succesfull SD-writes with the Apollo3 processor family, while other SPI functionalities seem to be preserved (tested with an eink and also an ADC which communicate over SPI).
Migration actions required
None
Documentation
Pull request type
Test results
Reviewers