Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
Nodemcu Firmware
Commits
9444ae28
Commit
9444ae28
authored
Oct 27, 2015
by
devsaurus
Browse files
simplify spi api
duplex_mode configuration enables/disables receiving with spi.send() spi.send_recv removed
parent
0ba0370b
Changes
5
Show whitespace changes
Inline
Side-by-side
app/driver/spi.c
View file @
9444ae28
...
@@ -64,7 +64,7 @@ void spi_lcd_9bit_write(uint8 spi_no,uint8 high_bit,uint8 low_8bit)
...
@@ -64,7 +64,7 @@ void spi_lcd_9bit_write(uint8 spi_no,uint8 high_bit,uint8 low_8bit)
* Description : SPI master initial function for common byte units transmission
* Description : SPI master initial function for common byte units transmission
* 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
*******************************************************************************/
*******************************************************************************/
void
spi_master_init
(
uint8
spi_no
,
unsigned
cpol
,
unsigned
cpha
,
uint32_t
clock_div
,
uint8
full_duplex
)
void
spi_master_init
(
uint8
spi_no
,
unsigned
cpol
,
unsigned
cpha
,
uint32_t
clock_div
)
{
{
uint32
regvalue
;
uint32
regvalue
;
...
@@ -85,7 +85,7 @@ void spi_master_init(uint8 spi_no, unsigned cpol, unsigned cpha, uint32_t clock_
...
@@ -85,7 +85,7 @@ void spi_master_init(uint8 spi_no, unsigned cpol, unsigned cpha, uint32_t clock_
PIN_FUNC_SELECT
(
PERIPHS_IO_MUX_MTDO_U
,
2
);
//configure io to spi mode
PIN_FUNC_SELECT
(
PERIPHS_IO_MUX_MTDO_U
,
2
);
//configure io to spi mode
}
}
SET_PERI_REG_MASK
(
SPI_USER
(
spi_no
),
SPI_CS_SETUP
|
SPI_CS_HOLD
|
SPI_RD_BYTE_ORDER
|
SPI_WR_BYTE_ORDER
);
SET_PERI_REG_MASK
(
SPI_USER
(
spi_no
),
SPI_CS_SETUP
|
SPI_CS_HOLD
|
SPI_RD_BYTE_ORDER
|
SPI_WR_BYTE_ORDER
|
SPI_DOUTDIN
);
//set clock polarity
//set clock polarity
// TODO: This doesn't work
// TODO: This doesn't work
...
@@ -103,8 +103,7 @@ void spi_master_init(uint8 spi_no, unsigned cpol, unsigned cpha, uint32_t clock_
...
@@ -103,8 +103,7 @@ void spi_master_init(uint8 spi_no, unsigned cpol, unsigned cpha, uint32_t clock_
CLEAR_PERI_REG_MASK
(
SPI_USER
(
spi_no
),
SPI_CK_OUT_EDGE
|
SPI_CK_I_EDGE
);
CLEAR_PERI_REG_MASK
(
SPI_USER
(
spi_no
),
SPI_CK_OUT_EDGE
|
SPI_CK_I_EDGE
);
}
}
CLEAR_PERI_REG_MASK
(
SPI_USER
(
spi_no
),
SPI_FLASH_MODE
|
SPI_USR_MISO
|
CLEAR_PERI_REG_MASK
(
SPI_USER
(
spi_no
),
SPI_FLASH_MODE
|
SPI_USR_MISO
|
SPI_USR_ADDR
|
SPI_USR_COMMAND
|
SPI_USR_DUMMY
);
SPI_USR_ADDR
|
SPI_USR_COMMAND
|
SPI_USR_DUMMY
|
SPI_DOUTDIN
);
//clear Dual or Quad lines transmission mode
//clear Dual or Quad lines transmission mode
CLEAR_PERI_REG_MASK
(
SPI_CTRL
(
spi_no
),
SPI_QIO_MODE
|
SPI_DIO_MODE
|
SPI_DOUT_MODE
|
SPI_QOUT_MODE
);
CLEAR_PERI_REG_MASK
(
SPI_CTRL
(
spi_no
),
SPI_QIO_MODE
|
SPI_DIO_MODE
|
SPI_DOUT_MODE
|
SPI_QOUT_MODE
);
...
@@ -124,11 +123,6 @@ void spi_master_init(uint8 spi_no, unsigned cpol, unsigned cpha, uint32_t clock_
...
@@ -124,11 +123,6 @@ void spi_master_init(uint8 spi_no, unsigned cpol, unsigned cpha, uint32_t clock_
((
1
&
SPI_CLKCNT_N
)
<<
SPI_CLKCNT_N_S
)
|
((
1
&
SPI_CLKCNT_N
)
<<
SPI_CLKCNT_N_S
)
|
((
0
&
SPI_CLKCNT_H
)
<<
SPI_CLKCNT_H_S
)
|
((
0
&
SPI_CLKCNT_H
)
<<
SPI_CLKCNT_H_S
)
|
((
1
&
SPI_CLKCNT_L
)
<<
SPI_CLKCNT_L_S
));
//clear bit 31,set SPI clock div
((
1
&
SPI_CLKCNT_L
)
<<
SPI_CLKCNT_L_S
));
//clear bit 31,set SPI clock div
if
(
full_duplex
>
0
)
{
SET_PERI_REG_MASK
(
SPI_USER
(
spi_no
),
SPI_DOUTDIN
);
}
}
}
/******************************************************************************
/******************************************************************************
...
@@ -250,20 +244,21 @@ uint32 spi_mast_get_miso(uint8 spi_no, uint8 offset, uint8 bitlen)
...
@@ -250,20 +244,21 @@ uint32 spi_mast_get_miso(uint8 spi_no, uint8 offset, uint8 bitlen)
* uint16 cmd_data - Command data.
* uint16 cmd_data - Command data.
* uint8 addr_bitlen - Valid number of bits in addr_data.
* uint8 addr_bitlen - Valid number of bits in addr_data.
* uint32 addr_data - Address data.
* uint32 addr_data - Address data.
* uint
8
mosi_bitlen - Valid number of bits in MOSI buffer.
* uint
16
mosi_bitlen - Valid number of bits in MOSI buffer.
* uint8 dummy_bitlen - Number of dummy cycles.
* uint8 dummy_bitlen - Number of dummy cycles.
* uint8 miso_bitlen - number of bits to be captured in MISO buffer.
* sint16 miso_bitlen - number of bits to be captured in MISO buffer.
* negative value activates full-duplex mode.
*******************************************************************************/
*******************************************************************************/
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
,
uint
8
mosi_bitlen
,
uint8
dummy_bitlen
,
u
int
8
miso_bitlen
)
uint
16
mosi_bitlen
,
uint8
dummy_bitlen
,
s
int
16
miso_bitlen
)
{
{
if
(
spi_no
>
1
)
if
(
spi_no
>
1
)
return
;
// handle invalid input number
return
;
// handle invalid input number
while
(
READ_PERI_REG
(
SPI_CMD
(
spi_no
))
&
SPI_USR
);
while
(
READ_PERI_REG
(
SPI_CMD
(
spi_no
))
&
SPI_USR
);
// default disable COMMAND, ADDR, MOSI, DUMMY, MISO
// default disable COMMAND, ADDR, MOSI, DUMMY, MISO
, and DOUTDIN (aka full-duplex)
CLEAR_PERI_REG_MASK
(
SPI_USER
(
spi_no
),
SPI_USR_COMMAND
|
SPI_USR_ADDR
|
SPI_USR_MOSI
|
SPI_USR_DUMMY
|
SPI_USR_MISO
);
CLEAR_PERI_REG_MASK
(
SPI_USER
(
spi_no
),
SPI_USR_COMMAND
|
SPI_USR_ADDR
|
SPI_USR_MOSI
|
SPI_USR_DUMMY
|
SPI_USR_MISO
|
SPI_DOUTDIN
);
// default set bit lengths
// default set bit lengths
WRITE_PERI_REG
(
SPI_USER1
(
spi_no
),
WRITE_PERI_REG
(
SPI_USER1
(
spi_no
),
((
addr_bitlen
-
1
)
&
SPI_USR_ADDR_BITLEN
)
<<
SPI_USR_ADDR_BITLEN_S
|
((
addr_bitlen
-
1
)
&
SPI_USR_ADDR_BITLEN
)
<<
SPI_USR_ADDR_BITLEN_S
|
...
@@ -298,6 +293,10 @@ void spi_mast_transaction(uint8 spi_no, uint8 cmd_bitlen, uint16 cmd_data, uint8
...
@@ -298,6 +293,10 @@ void spi_mast_transaction(uint8 spi_no, uint8 cmd_bitlen, uint16 cmd_data, uint8
{
{
SET_PERI_REG_MASK
(
SPI_USER
(
spi_no
),
SPI_USR_MISO
);
SET_PERI_REG_MASK
(
SPI_USER
(
spi_no
),
SPI_USR_MISO
);
}
}
else
if
(
miso_bitlen
<
0
)
{
SET_PERI_REG_MASK
(
SPI_USER
(
spi_no
),
SPI_DOUTDIN
);
}
// start transaction
// start transaction
SET_PERI_REG_MASK
(
SPI_CMD
(
spi_no
),
SPI_USR
);
SET_PERI_REG_MASK
(
SPI_CMD
(
spi_no
),
SPI_USR
);
...
...
app/include/driver/spi.h
View file @
9444ae28
...
@@ -18,14 +18,14 @@ void spi_lcd_mode_init(uint8 spi_no);
...
@@ -18,14 +18,14 @@ void spi_lcd_mode_init(uint8 spi_no);
void
spi_lcd_9bit_write
(
uint8
spi_no
,
uint8
high_bit
,
uint8
low_8bit
);
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
,
uint8
full_duplex
);
void
spi_master_init
(
uint8
spi_no
,
unsigned
cpol
,
unsigned
cpha
,
uint32_t
clock_div
);
// fill MOSI buffer
// fill MOSI buffer
void
spi_set_mosi
(
uint8
spi_no
,
uint8
offset
,
uint8
bitlen
,
uint32
data
);
void
spi_set_mosi
(
uint8
spi_no
,
uint8
offset
,
uint8
bitlen
,
uint32
data
);
// retrieve data from MISO buffer
// retrieve data from MISO buffer
uint32
spi_get_miso
(
uint8
spi_no
,
uint8
offset
,
uint8
bitlen
);
uint32
spi_get_miso
(
uint8
spi_no
,
uint8
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
,
uint
8
mosi_bitlen
,
uint8
dummy_bitlen
,
u
int
8
miso_bitlen
);
uint
16
mosi_bitlen
,
uint8
dummy_bitlen
,
s
int
16
miso_bitlen
);
//transmit data to esp8266 slave buffer,which needs 16bit transmission ,
//transmit data to esp8266 slave buffer,which needs 16bit transmission ,
//first byte is master command 0x04, second byte is master data
//first byte is master command 0x04, second byte is master data
...
...
app/modules/spi.c
View file @
9444ae28
...
@@ -7,9 +7,13 @@
...
@@ -7,9 +7,13 @@
#include "auxmods.h"
#include "auxmods.h"
#include "lrotable.h"
#include "lrotable.h"
#define SPI_HALFDUPLEX 0
#define SPI_FULLDUPLEX 1
static
u8
spi_databits
[
NUM_SPI
]
=
{
0
,
0
};
static
u8
spi_databits
[
NUM_SPI
]
=
{
0
,
0
};
static
u8
spi_duplex
[
NUM_SPI
]
=
{
SPI_HALFDUPLEX
,
SPI_HALFDUPLEX
};
// Lua: = spi.setup( id, mode, cpol, cpha, databits, clock_div, [
full_
duplex] )
// Lua: = spi.setup( id, mode, cpol, cpha, databits, clock_div, [duplex
_mode
] )
static
int
spi_setup
(
lua_State
*
L
)
static
int
spi_setup
(
lua_State
*
L
)
{
{
int
id
=
luaL_checkinteger
(
L
,
1
);
int
id
=
luaL_checkinteger
(
L
,
1
);
...
@@ -18,7 +22,7 @@ static int spi_setup( lua_State *L )
...
@@ -18,7 +22,7 @@ static int spi_setup( lua_State *L )
int
cpha
=
luaL_checkinteger
(
L
,
4
);
int
cpha
=
luaL_checkinteger
(
L
,
4
);
int
databits
=
luaL_checkinteger
(
L
,
5
);
int
databits
=
luaL_checkinteger
(
L
,
5
);
u32
clock_div
=
luaL_checkinteger
(
L
,
6
);
u32
clock_div
=
luaL_checkinteger
(
L
,
6
);
int
full_
duplex
=
luaL_optinteger
(
L
,
7
,
1
);
int
duplex
_mode
=
luaL_optinteger
(
L
,
7
,
SPI_HALFDUPLEX
);
MOD_CHECK_ID
(
spi
,
id
);
MOD_CHECK_ID
(
spi
,
id
);
...
@@ -43,18 +47,28 @@ static int spi_setup( lua_State *L )
...
@@ -43,18 +47,28 @@ static int spi_setup( lua_State *L )
clock_div
=
8
;
clock_div
=
8
;
}
}
if
(
full_duplex
!=
0
&&
full_duplex
!=
1
)
{
if
(
duplex_mode
==
SPI_HALFDUPLEX
||
duplex_mode
==
SPI_FULLDUPLEX
)
{
spi_duplex
[
id
]
=
duplex_mode
;
}
else
{
return
luaL_error
(
L
,
"out of range"
);
return
luaL_error
(
L
,
"out of range"
);
}
}
spi_databits
[
id
]
=
databits
;
spi_databits
[
id
]
=
databits
;
u32
res
=
platform_spi_setup
(
id
,
mode
,
cpol
,
cpha
,
clock_div
,
full_duplex
);
u32
res
=
platform_spi_setup
(
id
,
mode
,
cpol
,
cpha
,
clock_div
);
lua_pushinteger
(
L
,
res
);
lua_pushinteger
(
L
,
res
);
return
1
;
return
1
;
}
}
static
int
spi_generic_send_recv
(
lua_State
*
L
,
u8
recv
)
// Half-duplex mode:
// Lua: wrote = spi.send( id, data1, [data2], ..., [datan] )
// Full-duplex mode:
// Lua: wrote, [data1], ..., [datan] = spi.send_recv( id, data1, [data2], ..., [datan] )
// data can be either a string, a table or an 8-bit number
static
int
spi_send_recv
(
lua_State
*
L
)
{
{
unsigned
id
=
luaL_checkinteger
(
L
,
1
);
unsigned
id
=
luaL_checkinteger
(
L
,
1
);
const
char
*
pdata
;
const
char
*
pdata
;
...
@@ -63,6 +77,7 @@ static int spi_generic_send_recv( lua_State *L, u8 recv )
...
@@ -63,6 +77,7 @@ static int spi_generic_send_recv( lua_State *L, u8 recv )
u32
wrote
=
0
;
u32
wrote
=
0
;
int
pushed
=
1
;
int
pushed
=
1
;
unsigned
argn
,
tos
;
unsigned
argn
,
tos
;
u8
recv
=
spi_duplex
[
id
]
==
SPI_FULLDUPLEX
?
1
:
0
;
MOD_CHECK_ID
(
spi
,
id
);
MOD_CHECK_ID
(
spi
,
id
);
if
(
(
tos
=
lua_gettop
(
L
))
<
2
)
if
(
(
tos
=
lua_gettop
(
L
))
<
2
)
...
@@ -159,20 +174,6 @@ static int spi_generic_send_recv( lua_State *L, u8 recv )
...
@@ -159,20 +174,6 @@ static int spi_generic_send_recv( lua_State *L, u8 recv )
return
pushed
;
return
pushed
;
}
}
// Lua: wrote = spi.send( id, data1, [data2], ..., [datan] )
// data can be either a string, a table or an 8-bit number
static
int
spi_send
(
lua_State
*
L
)
{
return
spi_generic_send_recv
(
L
,
0
);
}
// Lua: wrote, [data1], ..., [datan] = spi.send_recv( id, data1, [data2], ..., [datan] )
// data can be either a string, a table or an 8-bit number
static
int
spi_send_recv
(
lua_State
*
L
)
{
return
spi_generic_send_recv
(
L
,
1
);
}
// Lua: read = spi.recv( id, size, [default data] )
// Lua: read = spi.recv( id, size, [default data] )
static
int
spi_recv
(
lua_State
*
L
)
static
int
spi_recv
(
lua_State
*
L
)
{
{
...
@@ -294,7 +295,7 @@ static int spi_transaction( lua_State *L )
...
@@ -294,7 +295,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
<
0
||
miso_bitlen
>
511
)
{
if
(
miso_bitlen
<
-
512
||
miso_bitlen
>
511
)
{
return
luaL_error
(
L
,
"miso_bitlen out of range"
);
return
luaL_error
(
L
,
"miso_bitlen out of range"
);
}
}
...
@@ -313,8 +314,7 @@ static int spi_transaction( lua_State *L )
...
@@ -313,8 +314,7 @@ static int spi_transaction( lua_State *L )
const
LUA_REG_TYPE
spi_map
[]
=
const
LUA_REG_TYPE
spi_map
[]
=
{
{
{
LSTRKEY
(
"setup"
),
LFUNCVAL
(
spi_setup
)
},
{
LSTRKEY
(
"setup"
),
LFUNCVAL
(
spi_setup
)
},
{
LSTRKEY
(
"send"
),
LFUNCVAL
(
spi_send
)
},
{
LSTRKEY
(
"send"
),
LFUNCVAL
(
spi_send_recv
)
},
{
LSTRKEY
(
"send_recv"
),
LFUNCVAL
(
spi_send_recv
)
},
{
LSTRKEY
(
"recv"
),
LFUNCVAL
(
spi_recv
)
},
{
LSTRKEY
(
"recv"
),
LFUNCVAL
(
spi_recv
)
},
{
LSTRKEY
(
"set_mosi"
),
LFUNCVAL
(
spi_set_mosi
)
},
{
LSTRKEY
(
"set_mosi"
),
LFUNCVAL
(
spi_set_mosi
)
},
{
LSTRKEY
(
"get_miso"
),
LFUNCVAL
(
spi_get_miso
)
},
{
LSTRKEY
(
"get_miso"
),
LFUNCVAL
(
spi_get_miso
)
},
...
@@ -327,8 +327,8 @@ const LUA_REG_TYPE spi_map[] =
...
@@ -327,8 +327,8 @@ const LUA_REG_TYPE spi_map[] =
{
LSTRKEY
(
"CPOL_LOW"
),
LNUMVAL
(
PLATFORM_SPI_CPOL_LOW
)
},
{
LSTRKEY
(
"CPOL_LOW"
),
LNUMVAL
(
PLATFORM_SPI_CPOL_LOW
)
},
{
LSTRKEY
(
"CPOL_HIGH"
),
LNUMVAL
(
PLATFORM_SPI_CPOL_HIGH
)
},
{
LSTRKEY
(
"CPOL_HIGH"
),
LNUMVAL
(
PLATFORM_SPI_CPOL_HIGH
)
},
{
LSTRKEY
(
"DATABITS_8"
),
LNUMVAL
(
8
)
},
{
LSTRKEY
(
"DATABITS_8"
),
LNUMVAL
(
8
)
},
{
LSTRKEY
(
"HALFDUPLEX"
),
LNUMVAL
(
0
)
},
{
LSTRKEY
(
"HALFDUPLEX"
),
LNUMVAL
(
SPI_HALFDUPLEX
)
},
{
LSTRKEY
(
"FULLDUPLEX"
),
LNUMVAL
(
1
)
},
{
LSTRKEY
(
"FULLDUPLEX"
),
LNUMVAL
(
SPI_FULLDUPLEX
)
},
#endif // #if LUA_OPTIMIZE_MEMORY > 0
#endif // #if LUA_OPTIMIZE_MEMORY > 0
{
LNILKEY
,
LNILVAL
}
{
LNILKEY
,
LNILVAL
}
};
};
...
@@ -348,8 +348,8 @@ LUALIB_API int luaopen_spi( lua_State *L )
...
@@ -348,8 +348,8 @@ LUALIB_API int luaopen_spi( lua_State *L )
MOD_REG_NUMBER
(
L
,
"CPOL_LOW"
,
PLATFORM_SPI_CPOL_LOW
);
MOD_REG_NUMBER
(
L
,
"CPOL_LOW"
,
PLATFORM_SPI_CPOL_LOW
);
MOD_REG_NUMBER
(
L
,
"CPOL_HIGH"
,
PLATFORM_SPI_CPOL_HIGH
);
MOD_REG_NUMBER
(
L
,
"CPOL_HIGH"
,
PLATFORM_SPI_CPOL_HIGH
);
MOD_REG_NUMBER
(
L
,
"DATABITS_8"
,
8
);
MOD_REG_NUMBER
(
L
,
"DATABITS_8"
,
8
);
MOD_REG_NUMBER
(
L
,
"HALFDUPLEX"
,
0
);
MOD_REG_NUMBER
(
L
,
"HALFDUPLEX"
,
SPI_HALFDUPLEX
);
MOD_REG_NUMBER
(
L
,
"FULLDUPLEX"
,
1
);
MOD_REG_NUMBER
(
L
,
"FULLDUPLEX"
,
SPI_FULLDUPLEX
);
return
1
;
return
1
;
#endif // #if LUA_OPTIMIZE_MEMORY > 0
#endif // #if LUA_OPTIMIZE_MEMORY > 0
...
...
app/platform/platform.c
View file @
9444ae28
...
@@ -435,15 +435,11 @@ int platform_i2c_recv_byte( unsigned id, int ack ){
...
@@ -435,15 +435,11 @@ int platform_i2c_recv_byte( unsigned id, int ack ){
return
r
;
return
r
;
}
}
static
uint8_t
platform_spi_fdplx
[
NUM_SPI
]
=
{
0
,
0
};
// *****************************************************************************
// *****************************************************************************
// SPI platform interface
// SPI platform interface
uint32_t
platform_spi_setup
(
uint8_t
id
,
int
mode
,
unsigned
cpol
,
unsigned
cpha
,
uint32_t
platform_spi_setup
(
uint8_t
id
,
int
mode
,
unsigned
cpol
,
unsigned
cpha
,
uint32_t
clock_div
)
uint32_t
clock_div
,
uint8
full_duplex
)
{
{
platform_spi_fdplx
[
id
]
=
full_duplex
;
spi_master_init
(
id
,
cpol
,
cpha
,
clock_div
);
spi_master_init
(
id
,
cpol
,
cpha
,
clock_div
,
full_duplex
);
return
1
;
return
1
;
}
}
...
@@ -462,7 +458,7 @@ spi_data_type platform_spi_send_recv( uint8_t id, uint8_t bitlen, spi_data_type
...
@@ -462,7 +458,7 @@ spi_data_type platform_spi_send_recv( uint8_t id, uint8_t bitlen, spi_data_type
return
0
;
return
0
;
spi_mast_set_mosi
(
id
,
0
,
bitlen
,
data
);
spi_mast_set_mosi
(
id
,
0
,
bitlen
,
data
);
spi_mast_transaction
(
id
,
0
,
0
,
0
,
0
,
bitlen
,
0
,
platform_spi_fdplx
[
id
]
>
0
?
0
:
bitlen
);
spi_mast_transaction
(
id
,
0
,
0
,
0
,
0
,
bitlen
,
0
,
-
1
);
return
spi_mast_get_miso
(
id
,
0
,
bitlen
);
return
spi_mast_get_miso
(
id
,
0
,
bitlen
);
}
}
...
@@ -486,7 +482,7 @@ spi_data_type platform_spi_get_miso( uint8_t id, uint8_t offset, uint8_t bitlen
...
@@ -486,7 +482,7 @@ spi_data_type platform_spi_get_miso( uint8_t id, uint8_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
,
uint
8
_t
mosi_bitlen
,
uint8_t
dummy_bitlen
,
u
int
8
_t
miso_bitlen
)
uint
16
_t
mosi_bitlen
,
uint8_t
dummy_bitlen
,
int
16
_t
miso_bitlen
)
{
{
if
((
cmd_bitlen
>
16
)
||
if
((
cmd_bitlen
>
16
)
||
(
addr_bitlen
>
32
)
||
(
addr_bitlen
>
32
)
||
...
...
app/platform/platform.h
View file @
9444ae28
...
@@ -96,7 +96,7 @@ typedef uint32_t spi_data_type;
...
@@ -96,7 +96,7 @@ typedef uint32_t spi_data_type;
// The platform SPI functions
// The platform SPI functions
int
platform_spi_exists
(
unsigned
id
);
int
platform_spi_exists
(
unsigned
id
);
uint32_t
platform_spi_setup
(
uint8_t
id
,
int
mode
,
unsigned
cpol
,
unsigned
cpha
,
uint32_t
clock_div
,
uint8_t
full_duplex
);
uint32_t
platform_spi_setup
(
uint8_t
id
,
int
mode
,
unsigned
cpol
,
unsigned
cpha
,
uint32_t
clock_div
);
int
platform_spi_send
(
uint8_t
id
,
uint8_t
bitlen
,
spi_data_type
data
);
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
);
...
@@ -105,7 +105,7 @@ int platform_spi_set_mosi( uint8_t id, uint8_t offset, uint8_t bitlen, spi_data_
...
@@ -105,7 +105,7 @@ int platform_spi_set_mosi( uint8_t id, uint8_t offset, uint8_t bitlen, spi_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
,
uint8_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
,
uint
8
_t
mosi_bitlen
,
uint8_t
dummy_bitlen
,
u
int
8
_t
miso_bitlen
);
uint
16
_t
mosi_bitlen
,
uint8_t
dummy_bitlen
,
int
16
_t
miso_bitlen
);
// *****************************************************************************
// *****************************************************************************
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment