mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
Merge pull request #20312 from maribu/drivers/periph_common/spi/transfer_u16
drivers/periph_spi: Add `spi_transfer_u16_be()`
This commit is contained in:
commit
f68f977274
@ -66,8 +66,8 @@
|
||||
#ifndef PERIPH_SPI_H
|
||||
#define PERIPH_SPI_H
|
||||
|
||||
#include <endian.h>
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
@ -430,6 +430,25 @@ uint8_t spi_transfer_reg(spi_t bus, spi_cs_t cs, uint8_t reg, uint8_t out);
|
||||
void spi_transfer_regs(spi_t bus, spi_cs_t cs, uint8_t reg,
|
||||
const void *out, void *in, size_t len);
|
||||
|
||||
/**
|
||||
* @brief Transfer a 16 bit number in big endian byte order
|
||||
*
|
||||
* @param[in] bus SPI device to use
|
||||
* @param[in] cs chip select pin/line to use, set to
|
||||
* SPI_CS_UNDEF if chip select should not be
|
||||
* handled by the SPI driver
|
||||
* @param[in] cont if true, keep device selected after transfer
|
||||
* @param[in] host_number number to transfer in host byte order
|
||||
* @return The 16 bit number received in host byte order
|
||||
*/
|
||||
static inline uint16_t spi_transfer_u16_be(spi_t bus, spi_cs_t cs, bool cont, uint16_t host_number)
|
||||
{
|
||||
const uint16_t send = htobe16(host_number);
|
||||
uint16_t receive;
|
||||
spi_transfer_bytes(bus, cs, cont, &send, &receive, sizeof(receive));
|
||||
return be16toh(receive);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -47,13 +47,7 @@ static const netdev_driver_t netdev_driver_w5100;
|
||||
|
||||
static inline void send_addr(w5100_t *dev, uint16_t addr)
|
||||
{
|
||||
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
||||
spi_transfer_byte(dev->p.spi, dev->p.cs, true, (addr >> 8));
|
||||
spi_transfer_byte(dev->p.spi, dev->p.cs, true, (addr & 0xff));
|
||||
#else
|
||||
spi_transfer_byte(dev->p.spi, dev->p.cs, true, (addr & 0xff));
|
||||
spi_transfer_byte(dev->p.spi, dev->p.cs, true, (addr >> 8));
|
||||
#endif
|
||||
spi_transfer_u16_be(dev->p.spi, dev->p.cs, true, addr);
|
||||
}
|
||||
|
||||
static uint8_t rreg(w5100_t *dev, uint16_t reg)
|
||||
|
Loading…
Reference in New Issue
Block a user