Merge pull request #12336 from benpicco/cc2538-spi_fix

cpu/cc2538: fix spi_transfer_bytes()
This commit is contained in:
Kevin "Tristate Tom" Weiss 2019-10-02 10:52:16 +02:00 committed by GitHub
commit 5bbfe92c11
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -145,14 +145,13 @@ void spi_transfer_bytes(spi_t bus, spi_cs_t cs, bool cont,
dev(bus)->DR; dev(bus)->DR;
} }
} }
else if (!out_buf) { /*TODO this case is currently untested */ else if (!out_buf) {
size_t in_cnt = 0; size_t in_cnt = 0;
for (size_t i = 0; i < len; i++) { for (size_t i = 0; i < len; i++) {
while (!(dev(bus)->SR & SSI_SR_TNF)) {} while (!(dev(bus)->SR & SSI_SR_TNF)) {}
dev(bus)->DR = 0; dev(bus)->DR = 0;
if (dev(bus)->SR & SSI_SR_RNE) { while (!(dev(bus)->SR & SSI_SR_RNE)) {}
in_buf[in_cnt++] = dev(bus)->DR; in_buf[in_cnt++] = dev(bus)->DR;
}
} }
/* get remaining bytes */ /* get remaining bytes */
while (dev(bus)->SR & SSI_SR_RNE) { while (dev(bus)->SR & SSI_SR_RNE) {
@ -163,7 +162,7 @@ void spi_transfer_bytes(spi_t bus, spi_cs_t cs, bool cont,
for (size_t i = 0; i < len; i++) { for (size_t i = 0; i < len; i++) {
while (!(dev(bus)->SR & SSI_SR_TNF)) {} while (!(dev(bus)->SR & SSI_SR_TNF)) {}
dev(bus)->DR = out_buf[i]; dev(bus)->DR = out_buf[i];
while (!(dev(bus)->SR & SSI_SR_RNE)){} while (!(dev(bus)->SR & SSI_SR_RNE)) {}
in_buf[i] = dev(bus)->DR; in_buf[i] = dev(bus)->DR;
} }
/* wait until no more busy */ /* wait until no more busy */