mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #4744 from deepikabhavnani/spi_issue_4743
Allow user to set default transfer byte for block readpull/4768/merge
commit
1f94ede86c
|
|
@ -32,7 +32,8 @@ SPI::SPI(PinName mosi, PinName miso, PinName sclk, PinName ssel) :
|
||||||
#endif
|
#endif
|
||||||
_bits(8),
|
_bits(8),
|
||||||
_mode(0),
|
_mode(0),
|
||||||
_hz(1000000) {
|
_hz(1000000),
|
||||||
|
_write_fill(SPI_FILL_CHAR) {
|
||||||
// No lock needed in the constructor
|
// No lock needed in the constructor
|
||||||
|
|
||||||
spi_init(&_spi, mosi, miso, sclk, ssel);
|
spi_init(&_spi, mosi, miso, sclk, ssel);
|
||||||
|
|
@ -102,7 +103,7 @@ int SPI::write(int value) {
|
||||||
int SPI::write(const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int SPI::write(const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
||||||
lock();
|
lock();
|
||||||
_acquire();
|
_acquire();
|
||||||
int ret = spi_master_block_write(&_spi, tx_buffer, tx_length, rx_buffer, rx_length);
|
int ret = spi_master_block_write(&_spi, tx_buffer, tx_length, rx_buffer, rx_length, _write_fill);
|
||||||
unlock();
|
unlock();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
@ -115,6 +116,12 @@ void SPI::unlock() {
|
||||||
_mutex->unlock();
|
_mutex->unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SPI::set_default_write_value(char data) {
|
||||||
|
lock();
|
||||||
|
_write_fill = data;
|
||||||
|
unlock();
|
||||||
|
}
|
||||||
|
|
||||||
#if DEVICE_SPI_ASYNCH
|
#if DEVICE_SPI_ASYNCH
|
||||||
|
|
||||||
int SPI::transfer(const void *tx_buffer, int tx_length, void *rx_buffer, int rx_length, unsigned char bit_width, const event_callback_t& callback, int event)
|
int SPI::transfer(const void *tx_buffer, int tx_length, void *rx_buffer, int rx_length, unsigned char bit_width, const event_callback_t& callback, int event)
|
||||||
|
|
|
||||||
|
|
@ -143,6 +143,15 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void unlock(void);
|
virtual void unlock(void);
|
||||||
|
|
||||||
|
/** Set default write data
|
||||||
|
* SPI requires the master to send some data during a read operation.
|
||||||
|
* Different devices may require different default byte values.
|
||||||
|
* For example: A SD Card requires default bytes to be 0xFF.
|
||||||
|
*
|
||||||
|
* @param data Default character to be transmitted while read operation
|
||||||
|
*/
|
||||||
|
void set_default_write_value(char data);
|
||||||
|
|
||||||
#if DEVICE_SPI_ASYNCH
|
#if DEVICE_SPI_ASYNCH
|
||||||
|
|
||||||
/** Start non-blocking SPI transfer using 8bit buffers.
|
/** Start non-blocking SPI transfer using 8bit buffers.
|
||||||
|
|
@ -271,6 +280,7 @@ protected:
|
||||||
int _bits;
|
int _bits;
|
||||||
int _mode;
|
int _mode;
|
||||||
int _hz;
|
int _hz;
|
||||||
|
char _write_fill;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/* Private acquire function without locking/unlocking
|
/* Private acquire function without locking/unlocking
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@
|
||||||
#define SPI_EVENT_INTERNAL_TRANSFER_COMPLETE (1 << 30) // Internal flag to report that an event occurred
|
#define SPI_EVENT_INTERNAL_TRANSFER_COMPLETE (1 << 30) // Internal flag to report that an event occurred
|
||||||
|
|
||||||
#define SPI_FILL_WORD (0xFFFF)
|
#define SPI_FILL_WORD (0xFFFF)
|
||||||
|
#define SPI_FILL_CHAR (0xFF)
|
||||||
|
|
||||||
#if DEVICE_SPI_ASYNCH
|
#if DEVICE_SPI_ASYNCH
|
||||||
/** Asynch SPI HAL structure
|
/** Asynch SPI HAL structure
|
||||||
|
|
@ -127,11 +128,12 @@ int spi_master_write(spi_t *obj, int value);
|
||||||
* @param[in] tx_length Number of bytes to write, may be zero
|
* @param[in] tx_length Number of bytes to write, may be zero
|
||||||
* @param[in] rx_buffer Pointer to the byte-array of data to read from the device
|
* @param[in] rx_buffer Pointer to the byte-array of data to read from the device
|
||||||
* @param[in] rx_length Number of bytes to read, may be zero
|
* @param[in] rx_length Number of bytes to read, may be zero
|
||||||
|
* @param[in] write_fill Default data transmitted while performing a read
|
||||||
* @returns
|
* @returns
|
||||||
* The number of bytes written and read from the device. This is
|
* The number of bytes written and read from the device. This is
|
||||||
* maximum of tx_length and rx_length.
|
* maximum of tx_length and rx_length.
|
||||||
*/
|
*/
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length);
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length, char write_fill);
|
||||||
|
|
||||||
/** Check if a value is available to read
|
/** Check if a value is available to read
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -262,11 +262,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -256,13 +256,13 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
char *rx_buffer, int rx_length)
|
char *rx_buffer, int rx_length, char write_fill)
|
||||||
{
|
{
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
char out, in;
|
char out, in;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
in = spi_master_write(obj, out);
|
in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -268,11 +268,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return (ssp_read(obj));
|
return (ssp_read(obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -268,11 +268,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return (ssp_read(obj));
|
return (ssp_read(obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -555,11 +555,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return rx_data;
|
return rx_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -296,11 +296,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char _write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : _write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -140,11 +140,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return obj->spi->POPR;
|
return obj->spi->POPR;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -141,11 +141,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return obj->spi->D & 0xff;
|
return obj->spi->D & 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -120,11 +120,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return obj->spi->D & 0xff;
|
return obj->spi->D & 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -199,11 +199,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -199,11 +199,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -118,11 +118,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return rx_data & 0xffff;
|
return rx_data & 0xffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -118,11 +118,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return rx_data & 0xffff;
|
return rx_data & 0xffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -115,11 +115,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return rx_data & 0xffff;
|
return rx_data & 0xffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -115,11 +115,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return rx_data & 0xffff;
|
return rx_data & 0xffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -117,11 +117,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return rx_data & 0xffff;
|
return rx_data & 0xffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -117,11 +117,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return rx_data & 0xffff;
|
return rx_data & 0xffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -117,11 +117,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return rx_data & 0xffff;
|
return rx_data & 0xffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -117,11 +117,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return rx_data & 0xffff;
|
return rx_data & 0xffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -127,11 +127,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return rx_data & 0xffff;
|
return rx_data & 0xffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -127,17 +127,17 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return rx_data & 0xffff;
|
return rx_data & 0xffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
DSPI_MasterTransferBlocking(spi_address[obj->spi.instance], &(dspi_transfer_t){
|
for (int i = 0; i < total; i++) {
|
||||||
.txData = (uint8_t *)tx_buffer,
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
.rxData = (uint8_t *)rx_buffer,
|
char in = spi_master_write(obj, out);
|
||||||
.dataSize = total,
|
if (i < rx_length) {
|
||||||
.configFlags = kDSPI_MasterCtar0 | kDSPI_MasterPcs0 | kDSPI_MasterPcsContinuous,
|
rx_buffer[i] = in;
|
||||||
});
|
}
|
||||||
|
}
|
||||||
DSPI_ClearStatusFlags(spi_address[obj->spi.instance], kDSPI_RxFifoDrainRequestFlag | kDSPI_EndOfQueueFlag);
|
|
||||||
|
|
||||||
return total;
|
return total;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -179,11 +179,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -179,11 +179,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -231,11 +231,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return spi_master_transaction(obj, value, MXC_S_SPI_FIFO_DIR_BOTH);
|
return spi_master_transaction(obj, value, MXC_S_SPI_FIFO_DIR_BOTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -167,11 +167,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return *req.rx_data;
|
return *req.rx_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -167,11 +167,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return *req.rx_data;
|
return *req.rx_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -263,11 +263,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return spi_read(obj);
|
return spi_read(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -487,11 +487,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return p_spi_info->rx_buf;
|
return p_spi_info->rx_buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -241,11 +241,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return value2;
|
return value2;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -244,11 +244,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return value2;
|
return value2;
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -190,11 +190,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return ssp_read(obj);
|
return ssp_read(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -156,11 +156,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return ssp_read(obj);
|
return ssp_read(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -192,11 +192,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return ssp_read(obj);
|
return ssp_read(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -184,11 +184,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return ssp_read(obj);
|
return ssp_read(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -248,11 +248,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return spi_read(obj);
|
return spi_read(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer,
|
||||||
|
int tx_length, char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -190,11 +190,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return ssp_read(obj);
|
return ssp_read(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -197,11 +197,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return ssp_read(obj);
|
return ssp_read(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -177,11 +177,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return ssp_read(obj);
|
return ssp_read(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -196,11 +196,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return ssp_read(obj);
|
return ssp_read(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -178,11 +178,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return ssp_read(obj);
|
return ssp_read(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -174,11 +174,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return spi_read(obj);
|
return spi_read(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -83,11 +83,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return(fSpiWriteB(obj, value));
|
return(fSpiWriteB(obj, value));
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -260,11 +260,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return spi_read(obj);
|
return spi_read(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -311,11 +311,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return spi_read(obj);
|
return spi_read(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -241,12 +241,13 @@ int spi_master_write (spi_t *obj, int value)
|
||||||
return ssi_read(obj);
|
return ssi_read(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length)
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill)
|
||||||
{
|
{
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -387,12 +387,13 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length)
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill)
|
||||||
{
|
{
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -391,11 +391,12 @@ int spi_master_write(spi_t *obj, int value)
|
||||||
return spi_read(obj);
|
return spi_read(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
|
|
@ -183,11 +183,12 @@ int spi_master_write(spi_t *obj, int value) {
|
||||||
return ssp_read(obj);
|
return ssp_read(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length) {
|
int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
|
||||||
|
char *rx_buffer, int rx_length, char write_fill) {
|
||||||
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
int total = (tx_length > rx_length) ? tx_length : rx_length;
|
||||||
|
|
||||||
for (int i = 0; i < total; i++) {
|
for (int i = 0; i < total; i++) {
|
||||||
char out = (i < tx_length) ? tx_buffer[i] : 0xff;
|
char out = (i < tx_length) ? tx_buffer[i] : write_fill;
|
||||||
char in = spi_master_write(obj, out);
|
char in = spi_master_write(obj, out);
|
||||||
if (i < rx_length) {
|
if (i < rx_length) {
|
||||||
rx_buffer[i] = in;
|
rx_buffer[i] = in;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue