mirror of https://github.com/ARMmbed/mbed-os.git
Move _mode from QSPI::configure_format to QSPI::QSPI
QSPI::configure_format shall not call initialize function. This way, QSPI::configure_format can be called any time, only to change the format of commands. It must contain only parameters for the commands, not for the Init functionpull/7783/head
parent
c57a47e4b5
commit
2b234c2902
|
|
@ -25,7 +25,7 @@ namespace mbed {
|
||||||
QSPI* QSPI::_owner = NULL;
|
QSPI* QSPI::_owner = NULL;
|
||||||
SingletonPtr<PlatformMutex> QSPI::_mutex;
|
SingletonPtr<PlatformMutex> QSPI::_mutex;
|
||||||
|
|
||||||
QSPI::QSPI(PinName io0, PinName io1, PinName io2, PinName io3, PinName sclk, PinName ssel) : _qspi()
|
QSPI::QSPI(PinName io0, PinName io1, PinName io2, PinName io3, PinName sclk, PinName ssel, int mode) : _qspi()
|
||||||
{
|
{
|
||||||
_qspi_io0 = io0;
|
_qspi_io0 = io0;
|
||||||
_qspi_io1 = io1;
|
_qspi_io1 = io1;
|
||||||
|
|
@ -39,7 +39,7 @@ QSPI::QSPI(PinName io0, PinName io1, PinName io2, PinName io3, PinName sclk, Pin
|
||||||
_alt_width = QSPI_CFG_BUS_SINGLE;
|
_alt_width = QSPI_CFG_BUS_SINGLE;
|
||||||
_alt_size = QSPI_CFG_ALT_SIZE_8;
|
_alt_size = QSPI_CFG_ALT_SIZE_8;
|
||||||
_data_width = QSPI_CFG_BUS_SINGLE;
|
_data_width = QSPI_CFG_BUS_SINGLE;
|
||||||
_mode = 0;
|
_mode = mode;
|
||||||
_hz = ONE_MHZ;
|
_hz = ONE_MHZ;
|
||||||
_initialized = false;
|
_initialized = false;
|
||||||
|
|
||||||
|
|
@ -47,13 +47,10 @@ QSPI::QSPI(PinName io0, PinName io1, PinName io2, PinName io3, PinName sclk, Pin
|
||||||
_initialize();
|
_initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
qspi_status_t QSPI::configure_format(qspi_bus_width_t inst_width, qspi_bus_width_t address_width, qspi_address_size_t address_size, qspi_bus_width_t alt_width, qspi_alt_size_t alt_size, qspi_bus_width_t data_width, int dummy_cycles, int mode )
|
qspi_status_t QSPI::configure_format(qspi_bus_width_t inst_width, qspi_bus_width_t address_width, qspi_address_size_t address_size, qspi_bus_width_t alt_width, qspi_alt_size_t alt_size, qspi_bus_width_t data_width, int dummy_cycles)
|
||||||
{
|
{
|
||||||
qspi_status_t ret_status = QSPI_STATUS_OK;
|
qspi_status_t ret_status = QSPI_STATUS_OK;
|
||||||
|
|
||||||
if (mode != 0 && mode != 1)
|
|
||||||
return QSPI_STATUS_INVALID_PARAMETER;
|
|
||||||
|
|
||||||
lock();
|
lock();
|
||||||
_inst_width = inst_width;
|
_inst_width = inst_width;
|
||||||
_address_width = address_width;
|
_address_width = address_width;
|
||||||
|
|
@ -61,12 +58,7 @@ qspi_status_t QSPI::configure_format(qspi_bus_width_t inst_width, qspi_bus_width
|
||||||
_alt_width = alt_width;
|
_alt_width = alt_width;
|
||||||
_alt_size = alt_size;
|
_alt_size = alt_size;
|
||||||
_data_width = data_width;
|
_data_width = data_width;
|
||||||
_mode = mode;
|
|
||||||
|
|
||||||
//Re-init the device, as the mode might have changed
|
|
||||||
if ( !_initialize() ) {
|
|
||||||
ret_status = QSPI_STATUS_ERROR;
|
|
||||||
}
|
|
||||||
unlock();
|
unlock();
|
||||||
|
|
||||||
return ret_status;
|
return ret_status;
|
||||||
|
|
@ -223,6 +215,9 @@ void QSPI::unlock()
|
||||||
// Note: Private helper function to initialize qspi HAL
|
// Note: Private helper function to initialize qspi HAL
|
||||||
bool QSPI::_initialize()
|
bool QSPI::_initialize()
|
||||||
{
|
{
|
||||||
|
if (_mode != 0 && _mode != 1)
|
||||||
|
return QSPI_STATUS_INVALID_PARAMETER;
|
||||||
|
|
||||||
qspi_status_t ret = qspi_init(&_qspi, _qspi_io0, _qspi_io1, _qspi_io2, _qspi_io3, _qspi_clk, _qspi_cs, _hz, _mode );
|
qspi_status_t ret = qspi_init(&_qspi, _qspi_io0, _qspi_io1, _qspi_io2, _qspi_io3, _qspi_clk, _qspi_cs, _hz, _mode );
|
||||||
if (QSPI_STATUS_OK == ret) {
|
if (QSPI_STATUS_OK == ret) {
|
||||||
_initialized = true;
|
_initialized = true;
|
||||||
|
|
|
||||||
|
|
@ -76,8 +76,11 @@ public:
|
||||||
* @param io3 4th IO pin used for sending/receiving data during data phase of a transaction
|
* @param io3 4th IO pin used for sending/receiving data during data phase of a transaction
|
||||||
* @param sclk QSPI Clock pin
|
* @param sclk QSPI Clock pin
|
||||||
* @param ssel QSPI chip select pin
|
* @param ssel QSPI chip select pin
|
||||||
|
* @param mode Mode specifies the SPI mode(Mode=0 uses CPOL=0, CPHA=0, Mode=1 uses CPOL=1, CPHA=1)
|
||||||
|
* default value = 0
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
QSPI(PinName io0, PinName io1, PinName io2, PinName io3, PinName sclk, PinName ssel=NC);
|
QSPI(PinName io0, PinName io1, PinName io2, PinName io3, PinName sclk, PinName ssel=NC, int mode=0);
|
||||||
|
|
||||||
/** Configure the data transmission format
|
/** Configure the data transmission format
|
||||||
*
|
*
|
||||||
|
|
@ -88,7 +91,6 @@ public:
|
||||||
* @param alt_size Size in bits used by alt phase(Valid values are 8,16,24,32)
|
* @param alt_size Size in bits used by alt phase(Valid values are 8,16,24,32)
|
||||||
* @param data_width Bus width used by data phase(Valid values are 1,2,4)
|
* @param data_width Bus width used by data phase(Valid values are 1,2,4)
|
||||||
* @param dummy_cycles Number of dummy clock cycles to be used after alt phase
|
* @param dummy_cycles Number of dummy clock cycles to be used after alt phase
|
||||||
* @param mode Mode specifies the SPI mode(Mode=0 uses CPOL=0, CPHA=0, Mode=1 uses CPOL=1, CPHA=1)
|
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
qspi_status_t configure_format(qspi_bus_width_t inst_width,
|
qspi_status_t configure_format(qspi_bus_width_t inst_width,
|
||||||
|
|
@ -97,8 +99,7 @@ public:
|
||||||
qspi_bus_width_t alt_width,
|
qspi_bus_width_t alt_width,
|
||||||
qspi_alt_size_t alt_size,
|
qspi_alt_size_t alt_size,
|
||||||
qspi_bus_width_t data_width,
|
qspi_bus_width_t data_width,
|
||||||
int dummy_cycles,
|
int dummy_cycles);
|
||||||
int mode);
|
|
||||||
|
|
||||||
/** Set the qspi bus clock frequency
|
/** Set the qspi bus clock frequency
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue