mirror of
https://gitee.com/seekfree/TC264_Library.git
synced 2026-06-03 19:32:55 +00:00
优化SPI通信
This commit is contained in:
@@ -1239,17 +1239,9 @@ IFX_INLINE void IfxQspi_writeMixedDataTransmitFifo(Ifx_QSPI *qspi, uint32 mixEnt
|
|||||||
qspi->MIXENTRY.U = mixEntryVal;
|
qspi->MIXENTRY.U = mixEntryVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern uint8 spi_mosi_data_not;
|
|
||||||
IFX_INLINE void IfxQspi_writeTransmitFifo(Ifx_QSPI *qspi, uint32 data)
|
IFX_INLINE void IfxQspi_writeTransmitFifo(Ifx_QSPI *qspi, uint32 data)
|
||||||
{
|
{
|
||||||
if(spi_mosi_data_not)
|
|
||||||
{
|
|
||||||
qspi->DATAENTRY[0].U = ~data;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
qspi->DATAENTRY[0].U = data;
|
qspi->DATAENTRY[0].U = data;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
#define MAX_BAUD 50000000
|
#define MAX_BAUD 50000000
|
||||||
|
|
||||||
uint8 spi_mosi_data_not;
|
uint8 spi_not[4] = {0};
|
||||||
|
|
||||||
void spi_mux(SPIN_enum spi_n, SPI_PIN_enum sck_pin, SPI_PIN_enum mosi_pin, SPI_PIN_enum miso_pin, SPI_PIN_enum cs_pin, IfxQspi_SpiMaster_Pins *set_pin, IfxQspi_SpiMaster_Output *set_cs)
|
void spi_mux(SPIN_enum spi_n, SPI_PIN_enum sck_pin, SPI_PIN_enum mosi_pin, SPI_PIN_enum miso_pin, SPI_PIN_enum cs_pin, IfxQspi_SpiMaster_Pins *set_pin, IfxQspi_SpiMaster_Output *set_cs)
|
||||||
{
|
{
|
||||||
@@ -313,9 +313,9 @@ void spi_init(SPIN_enum spi_n, SPI_PIN_enum sck_pin, SPI_PIN_enum mosi_pin, SPI_
|
|||||||
MasterChConfig.sls.output = SlsoPin;
|
MasterChConfig.sls.output = SlsoPin;
|
||||||
IfxQspi_SpiMaster_initChannel(&MasterChHandle, &MasterChConfig);
|
IfxQspi_SpiMaster_initChannel(&MasterChHandle, &MasterChConfig);
|
||||||
|
|
||||||
if(mosi_pin == SPI2_MOSI_P13_2 || mosi_pin == SPI3_MOSI_P22_2)
|
if((mosi_pin == SPI2_MOSI_P13_2 && spi_n == SPI_2) || (mosi_pin == SPI3_MOSI_P22_2 && spi_n == SPI_2))
|
||||||
{
|
{
|
||||||
spi_mosi_data_not = 1;
|
spi_not[spi_n] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -373,8 +373,8 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata
|
|||||||
len -= 1;
|
len -= 1;
|
||||||
while(i < len)
|
while(i < len)
|
||||||
{
|
{
|
||||||
|
if(spi_not[spi_n]) IfxQspi_writeTransmitFifo(moudle, ~(*modata++));
|
||||||
IfxQspi_writeTransmitFifo(moudle, *modata++);
|
else IfxQspi_writeTransmitFifo(moudle, (*modata++));
|
||||||
if(midata)
|
if(midata)
|
||||||
{
|
{
|
||||||
while(moudle->STATUS.B.RXFIFOLEVEL == 0);
|
while(moudle->STATUS.B.RXFIFOLEVEL == 0);
|
||||||
@@ -388,7 +388,10 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata
|
|||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
if(continuous) IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U);
|
if(continuous) IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U);
|
||||||
IfxQspi_writeTransmitFifo(moudle, *modata);
|
|
||||||
|
if(spi_not[spi_n]) IfxQspi_writeTransmitFifo(moudle, ~(*modata));
|
||||||
|
else IfxQspi_writeTransmitFifo(moudle, *modata);
|
||||||
|
|
||||||
while(moudle->STATUS.B.TXFIFOLEVEL != 0);
|
while(moudle->STATUS.B.TXFIFOLEVEL != 0);
|
||||||
|
|
||||||
if(midata)
|
if(midata)
|
||||||
|
|||||||
Reference in New Issue
Block a user