Merge pull request #1029 from devsaurus/spi_buffer

Extend data type for spi miso/mosi buffer offset to 16 bit.
This commit is contained in:
Marcel Stör 2016-02-10 07:05:59 +01:00
commit 2c5303d51f
5 changed files with 15 additions and 15 deletions

View File

@ -129,11 +129,11 @@ void spi_master_init(uint8 spi_no, unsigned cpol, unsigned cpha, uint32_t clock_
* The data is regarded as a sequence of bits with length 'bitlen'. * The data is regarded as a sequence of bits with length 'bitlen'.
* It will be written left-aligned starting from position 'offset'. * It will be written left-aligned starting from position 'offset'.
* Parameters : uint8 spi_no - SPI module number, Only "SPI" and "HSPI" are valid * Parameters : uint8 spi_no - SPI module number, Only "SPI" and "HSPI" are valid
* uint8 offset - offset into MOSI buffer (number of bits) * uint16 offset - offset into MOSI buffer (number of bits)
* uint8 bitlen - valid number of bits in data * uint8 bitlen - valid number of bits in data
* uint32 data - data to be written into buffer * uint32 data - data to be written into buffer
*******************************************************************************/ *******************************************************************************/
void spi_mast_set_mosi(uint8 spi_no, uint8 offset, uint8 bitlen, uint32 data) void spi_mast_set_mosi(uint8 spi_no, uint16 offset, uint8 bitlen, uint32 data)
{ {
uint8 wn, wn_offset, wn_bitlen; uint8 wn, wn_offset, wn_bitlen;
uint32 wn_data; uint32 wn_data;
@ -187,10 +187,10 @@ void spi_mast_set_mosi(uint8 spi_no, uint8 offset, uint8 bitlen, uint32 data)
* The data is regarded as a sequence of bits with length 'bitlen'. * The data is regarded as a sequence of bits with length 'bitlen'.
* It will be read starting left-aligned from position 'offset'. * It will be read starting left-aligned from position 'offset'.
* Parameters : uint8 spi_no - SPI module number, Only "SPI" and "HSPI" are valid * Parameters : uint8 spi_no - SPI module number, Only "SPI" and "HSPI" are valid
* uint8 offset - offset into MISO buffer (number of bits) * uint16 offset - offset into MISO buffer (number of bits)
* uint8 bitlen - requested number of bits in data * uint8 bitlen - requested number of bits in data
*******************************************************************************/ *******************************************************************************/
uint32 spi_mast_get_miso(uint8 spi_no, uint8 offset, uint8 bitlen) uint32 spi_mast_get_miso(uint8 spi_no, uint16 offset, uint8 bitlen)
{ {
uint8 wn, wn_offset, wn_bitlen; uint8 wn, wn_offset, wn_bitlen;
uint32 wn_data = 0; uint32 wn_data = 0;

View File

@ -20,9 +20,9 @@ void spi_lcd_9bit_write(uint8 spi_no,uint8 high_bit,uint8 low_8bit);
//spi master init funtion //spi master init funtion
void spi_master_init(uint8 spi_no, unsigned cpol, unsigned cpha, uint32_t clock_div); void spi_master_init(uint8 spi_no, unsigned cpol, unsigned cpha, uint32_t clock_div);
// fill MOSI buffer // fill MOSI buffer
void spi_mast_set_mosi(uint8 spi_no, uint8 offset, uint8 bitlen, uint32 data); void spi_mast_set_mosi(uint8 spi_no, uint16 offset, uint8 bitlen, uint32 data);
// retrieve data from MISO buffer // retrieve data from MISO buffer
uint32 spi_mast_get_miso(uint8 spi_no, uint8 offset, uint8 bitlen); uint32 spi_mast_get_miso(uint8 spi_no, uint16 offset, uint8 bitlen);
// initiate SPI transaction // initiate SPI transaction
void spi_mast_transaction(uint8 spi_no, uint8 cmd_bitlen, uint16 cmd_data, uint8 addr_bitlen, uint32 addr_data, void spi_mast_transaction(uint8 spi_no, uint8 cmd_bitlen, uint16 cmd_data, uint8 addr_bitlen, uint32 addr_data,
uint16 mosi_bitlen, uint8 dummy_bitlen, sint16 miso_bitlen); uint16 mosi_bitlen, uint8 dummy_bitlen, sint16 miso_bitlen);

View File

@ -292,7 +292,7 @@ static int spi_transaction( lua_State *L )
return luaL_error( L, "dummy_bitlen out of range" ); return luaL_error( L, "dummy_bitlen out of range" );
} }
if (miso_bitlen < -512 || miso_bitlen > 511) { if (miso_bitlen < -512 || miso_bitlen > 512) {
return luaL_error( L, "miso_bitlen out of range" ); return luaL_error( L, "miso_bitlen out of range" );
} }

View File

@ -478,7 +478,7 @@ spi_data_type platform_spi_send_recv( uint8_t id, uint8_t bitlen, spi_data_type
return spi_mast_get_miso( id, 0, bitlen ); return spi_mast_get_miso( id, 0, bitlen );
} }
int platform_spi_set_mosi( uint8_t id, uint8_t offset, uint8_t bitlen, spi_data_type data ) int platform_spi_set_mosi( uint8_t id, uint16_t offset, uint8_t bitlen, spi_data_type data )
{ {
if (offset + bitlen > 512) if (offset + bitlen > 512)
return PLATFORM_ERR; return PLATFORM_ERR;
@ -488,7 +488,7 @@ int platform_spi_set_mosi( uint8_t id, uint8_t offset, uint8_t bitlen, spi_data_
return PLATFORM_OK; return PLATFORM_OK;
} }
spi_data_type platform_spi_get_miso( uint8_t id, uint8_t offset, uint8_t bitlen ) spi_data_type platform_spi_get_miso( uint8_t id, uint16_t offset, uint8_t bitlen )
{ {
if (offset + bitlen > 512) if (offset + bitlen > 512)
return 0; return 0;

View File

@ -101,8 +101,8 @@ int platform_spi_send( uint8_t id, uint8_t bitlen, spi_data_type data );
spi_data_type platform_spi_send_recv( uint8_t id, uint8_t bitlen, spi_data_type data ); spi_data_type platform_spi_send_recv( uint8_t id, uint8_t bitlen, spi_data_type data );
void platform_spi_select( unsigned id, int is_select ); void platform_spi_select( unsigned id, int is_select );
int platform_spi_set_mosi( uint8_t id, uint8_t offset, uint8_t bitlen, spi_data_type data ); int platform_spi_set_mosi( uint8_t id, uint16_t offset, uint8_t bitlen, spi_data_type data );
spi_data_type platform_spi_get_miso( uint8_t id, uint8_t offset, uint8_t bitlen ); spi_data_type platform_spi_get_miso( uint8_t id, uint16_t offset, uint8_t bitlen );
int platform_spi_transaction( uint8_t id, uint8_t cmd_bitlen, spi_data_type cmd_data, int platform_spi_transaction( uint8_t id, uint8_t cmd_bitlen, spi_data_type cmd_data,
uint8_t addr_bitlen, spi_data_type addr_data, uint8_t addr_bitlen, spi_data_type addr_data,
uint16_t mosi_bitlen, uint8_t dummy_bitlen, int16_t miso_bitlen ); uint16_t mosi_bitlen, uint8_t dummy_bitlen, int16_t miso_bitlen );