[En-Nut-Discussion] RFC: spibus: Return status of MISO line with transfer with xlen == 0;
bon at elektron.ikp.physik.tu-darmstadt.de
Wed Sep 7 12:55:45 CEST 2016
e.g. the LTC24xx delta-sigma converters with spi connection provide a static
value on MISO to indicate conversion completion. With the present owibus
driver, I don't see a way to query MISO via the driver. Instead the IO pin
has to be queried by GPIO commands, requiring the user program to know the
I have a patch, extending the spi bus transfer functionality like:
* \brief Transfer data on the SPI bus using single buffered interrupt mode.
* A device must have been selected by calling At91SpiSelect().
+ * With xlen = 0, the status of the MISO line is returned.
* \param node Specifies the SPI bus node.
* \param txbuf Pointer to the transmit buffer. If NULL, undetermined
* byte values are transmitted.
* \param rxbuf Pointer to the receive buffer. If NULL, then incoming
* data is discarded.
* \param xlen Number of bytes to transfer.
- * \return Always 0.
+ * \return Status of Miso with xlen == 0, 0 else.
rc = (*bus->bus_transfer) (node, NULL, NULL, 0);
and implemented in following file:
nut/arch/avr/dev/spibus0avr.c | 7 ++++++-
nut/arch/cm3/dev/nxp/lpc176x_spi.c | 7 ++++++-
nut/arch/cm3/dev/stm/stm32_spi.c | 9 ++++++---
nut/dev/spibus0gpio.c | 13 ++++++++++++-
nut/dev/spibus_npl.c | 2 ++
9 files changed, 42 insertions(+), 6 deletions(-)
Only a fixme is added for some archs where I don't understand GPIO handling:
nut/arch/arm/dev/atmel/spibus0at91.c | 2 ++
nut/arch/arm/dev/atmel/spibus0at91ssc.c | 2 ++
nut/arch/arm/dev/atmel/spibus1at91.c | 2 ++
nut/arch/arm/dev/atmel/spibus_at91.c | 4 ++++
but not for some other archs.
- Does this approach make sense?
- Is it right to apply the patch even when for some archs the feature is not
Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Institut fuer Kernphysik Schlossgartenstrasse 9 64289 Darmstadt
--------- Tel. 06151 1623569 ------- Fax. 06151 1623305 ---------
More information about the En-Nut-Discussion