From 2675e06f9181a72c4ea40e3ac48a28869700856a Mon Sep 17 00:00:00 2001 From: SeekFree <1325536866@qq.com> Date: Thu, 24 Feb 2022 14:17:34 +0800 Subject: [PATCH] =?UTF-8?q?V1.2.5=20=20=E4=BC=98=E5=8C=96=E7=A1=AC?= =?UTF-8?q?=E4=BB=B6SPI=E5=87=BD=E6=95=B0=E3=80=81SPI=E5=B1=8F=E5=B9=95?= =?UTF-8?q?=E9=A9=B1=E5=8A=A8=EF=BC=8C=E6=8F=90=E9=AB=98SPI=E5=B1=8F?= =?UTF-8?q?=E5=B9=95=E5=88=B7=E6=96=B0=E9=80=9F=E5=BA=A6=EF=BC=8CIPS1.14?= =?UTF-8?q?=E5=B1=8F=E5=B9=95=E6=98=BE=E7=A4=BA=E6=80=BB=E9=92=BB=E9=A3=8E?= =?UTF-8?q?188*120=E5=8F=AF=E8=BE=BE31=E5=B8=A7=EF=BC=8C=E6=98=BE=E7=A4=BA?= =?UTF-8?q?160*120=E5=8F=AF=E8=BE=BE37=E5=B8=A7=EF=BC=8CTFT1.8=E5=B1=8F?= =?UTF-8?q?=E5=B9=95=E6=98=BE=E7=A4=BA=E6=80=BB=E9=92=BB=E9=A3=8E160*120?= =?UTF-8?q?=E5=8F=AF=E8=BE=BE37=E5=B8=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Example/ADC_Demo/Libraries/doc/version.txt | 3 + .../Libraries/seekfree_libraries/zf_spi.c | 36 ++- .../seekfree_peripheral/SEEKFREE_18TFT.c | 6 +- .../seekfree_peripheral/SEEKFREE_IPS114_SPI.c | 6 +- .../Libraries/doc/version.txt | 3 + .../Libraries/seekfree_libraries/zf_spi.c | 36 ++- .../seekfree_peripheral/SEEKFREE_18TFT.c | 6 +- .../seekfree_peripheral/SEEKFREE_IPS114_SPI.c | 6 +- .../Dual_Core_Demo/Libraries/doc/version.txt | 3 + .../Libraries/seekfree_libraries/zf_spi.c | 36 ++- .../seekfree_peripheral/SEEKFREE_18TFT.c | 6 +- .../seekfree_peripheral/SEEKFREE_IPS114_SPI.c | 6 +- Example/EEPROM_Demo/Libraries/doc/version.txt | 3 + .../Libraries/seekfree_libraries/zf_spi.c | 36 ++- .../seekfree_peripheral/SEEKFREE_18TFT.c | 6 +- .../seekfree_peripheral/SEEKFREE_IPS114_SPI.c | 6 +- .../Encoder_Demo/Libraries/doc/version.txt | 3 + .../Libraries/seekfree_libraries/zf_spi.c | 36 ++- .../seekfree_peripheral/SEEKFREE_18TFT.c | 6 +- .../seekfree_peripheral/SEEKFREE_IPS114_SPI.c | 6 +- Example/FFT_Demo/Libraries/doc/version.txt | 3 + .../Libraries/seekfree_libraries/zf_spi.c | 36 ++- .../seekfree_peripheral/SEEKFREE_18TFT.c | 6 +- .../seekfree_peripheral/SEEKFREE_IPS114_SPI.c | 6 +- .../Libraries/doc/version.txt | 3 + .../Libraries/seekfree_libraries/zf_spi.c | 36 ++- .../seekfree_peripheral/SEEKFREE_18TFT.c | 6 +- .../seekfree_peripheral/SEEKFREE_IPS114_SPI.c | 6 +- .../Libraries/doc/version.txt | 3 + .../Libraries/seekfree_libraries/zf_spi.c | 36 ++- .../seekfree_peripheral/SEEKFREE_18TFT.c | 6 +- .../seekfree_peripheral/SEEKFREE_IPS114_SPI.c | 6 +- .../LED_Blink_Demo/Libraries/doc/version.txt | 3 + .../Libraries/seekfree_libraries/zf_spi.c | 36 ++- .../seekfree_peripheral/SEEKFREE_18TFT.c | 6 +- .../seekfree_peripheral/SEEKFREE_IPS114_SPI.c | 6 +- Example/PIT_Demo/Libraries/doc/version.txt | 3 + .../Libraries/seekfree_libraries/zf_spi.c | 36 ++- .../seekfree_peripheral/SEEKFREE_18TFT.c | 6 +- .../seekfree_peripheral/SEEKFREE_IPS114_SPI.c | 6 +- Example/PWM_Demo/Libraries/doc/version.txt | 3 + .../Libraries/seekfree_libraries/zf_spi.c | 36 ++- .../seekfree_peripheral/SEEKFREE_18TFT.c | 6 +- .../seekfree_peripheral/SEEKFREE_IPS114_SPI.c | 6 +- Example/Printf_Demo/Libraries/doc/version.txt | 3 + .../Libraries/seekfree_libraries/zf_spi.c | 36 ++- .../seekfree_peripheral/SEEKFREE_18TFT.c | 6 +- .../seekfree_peripheral/SEEKFREE_IPS114_SPI.c | 6 +- .../Libraries/doc/version.txt | 3 + .../Libraries/seekfree_libraries/zf_spi.c | 36 ++- .../seekfree_peripheral/SEEKFREE_18TFT.c | 6 +- .../seekfree_peripheral/SEEKFREE_IPS114_SPI.c | 6 +- .../Systick_Demo/Libraries/doc/version.txt | 3 + .../Libraries/seekfree_libraries/zf_spi.c | 36 ++- .../seekfree_peripheral/SEEKFREE_18TFT.c | 6 +- .../seekfree_peripheral/SEEKFREE_IPS114_SPI.c | 6 +- Example/UART_Demo/Libraries/doc/version.txt | 3 + .../Libraries/seekfree_libraries/zf_spi.c | 36 ++- .../seekfree_peripheral/SEEKFREE_18TFT.c | 6 +- .../seekfree_peripheral/SEEKFREE_IPS114_SPI.c | 6 +- Seekfree_TC264_Opensource_Library/.cproject | 290 +++++++++--------- .../Libraries/doc/version.txt | 3 + .../Libraries/seekfree_libraries/zf_spi.c | 36 ++- .../seekfree_peripheral/SEEKFREE_18TFT.c | 6 +- .../seekfree_peripheral/SEEKFREE_IPS114_SPI.c | 6 +- .../USER/Cpu0_Main.c | 6 +- 66 files changed, 678 insertions(+), 434 deletions(-) diff --git a/Example/ADC_Demo/Libraries/doc/version.txt b/Example/ADC_Demo/Libraries/doc/version.txt index 26c5f0e..f828db2 100644 --- a/Example/ADC_Demo/Libraries/doc/version.txt +++ b/Example/ADC_Demo/Libraries/doc/version.txt @@ -1,3 +1,6 @@ +V1.2.5 + 优化硬件SPI函数、SPI屏幕驱动,提高SPI屏幕刷新速度,IPS1.14屏幕显示总钻风188*120可达31帧,显示160*120可达37帧,TFT1.8屏幕显示总钻风160*120可达37帧。 + V1.2.4 修复systick_delay_ms函数在延时时间较长的时候,延时时间不正确的问题 diff --git a/Example/ADC_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/ADC_Demo/Libraries/seekfree_libraries/zf_spi.c index e3e7e68..6745f97 100644 --- a/Example/ADC_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/ADC_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -292,26 +292,36 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata bacon.B.TRAIL = 1; bacon.B.TPRE = 1; bacon.B.CS = cs_pin%102/6-3; + if(continuous) IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);//发送数据后CS继续保持为低 else IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); //每发送一个字节CS信号拉高一次 + if(midata) + { + //将之前fifo中的数据全读读取出来 + i = moudle->STATUS.B.RXFIFOLEVEL; + while(i--) + { + (uint8)IfxQspi_readReceiveFifo(moudle); + } + } + if(len>1) { i = 0; - while(i < (len-1)) + len -= 1; + while(i < len) { - while(moudle->STATUS.B.TXFIFOLEVEL != 0); - IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) + + IfxQspi_writeTransmitFifo(moudle, *modata++); + if(midata) { - IfxQspi_read8(moudle,midata,1); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); midata++; } - else (void)moudle->RXEXIT.U; - modata++; - i++; + while(moudle->STATUS.B.TXFIFOLEVEL != 0); } } @@ -320,9 +330,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata IfxQspi_writeTransmitFifo(moudle, *modata); while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)moudle->RXEXIT.U; + if(midata) + { + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); + } } diff --git a/Example/ADC_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c b/Example/ADC_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c index 7402a8d..9b4b650 100644 --- a/Example/ADC_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c +++ b/Example/ADC_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c @@ -51,14 +51,14 @@ void lcd_writeIndex(uint8 dat) //写命令 { DC(0); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writeData(uint8 dat) //写数据 { DC(1); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writedata_16bit(uint16 dat) //向液晶屏写一个16位数据 @@ -68,7 +68,7 @@ void lcd_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; DC(1); - spi_mosi(TFT_SPIN,TFT_CS,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(TFT_SPIN,TFT_CS,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/ADC_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c b/Example/ADC_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c index 90098f7..5f3fd1e 100644 --- a/Example/ADC_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c +++ b/Example/ADC_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c @@ -52,7 +52,7 @@ void ips114_writeIndex(uint8 dat) //写命令 { IPS114_DC(0); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } @@ -66,7 +66,7 @@ void ips114_writeIndex(uint8 dat) //写 void ips114_writeData(uint8 dat) //写数据 { IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } //------------------------------------------------------------------------------------------------------------------- @@ -83,7 +83,7 @@ void ips114_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/Cpu1_Handles_Interrupts_Demo/Libraries/doc/version.txt b/Example/Cpu1_Handles_Interrupts_Demo/Libraries/doc/version.txt index 26c5f0e..f828db2 100644 --- a/Example/Cpu1_Handles_Interrupts_Demo/Libraries/doc/version.txt +++ b/Example/Cpu1_Handles_Interrupts_Demo/Libraries/doc/version.txt @@ -1,3 +1,6 @@ +V1.2.5 + 优化硬件SPI函数、SPI屏幕驱动,提高SPI屏幕刷新速度,IPS1.14屏幕显示总钻风188*120可达31帧,显示160*120可达37帧,TFT1.8屏幕显示总钻风160*120可达37帧。 + V1.2.4 修复systick_delay_ms函数在延时时间较长的时候,延时时间不正确的问题 diff --git a/Example/Cpu1_Handles_Interrupts_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/Cpu1_Handles_Interrupts_Demo/Libraries/seekfree_libraries/zf_spi.c index e3e7e68..6745f97 100644 --- a/Example/Cpu1_Handles_Interrupts_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/Cpu1_Handles_Interrupts_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -292,26 +292,36 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata bacon.B.TRAIL = 1; bacon.B.TPRE = 1; bacon.B.CS = cs_pin%102/6-3; + if(continuous) IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);//发送数据后CS继续保持为低 else IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); //每发送一个字节CS信号拉高一次 + if(midata) + { + //将之前fifo中的数据全读读取出来 + i = moudle->STATUS.B.RXFIFOLEVEL; + while(i--) + { + (uint8)IfxQspi_readReceiveFifo(moudle); + } + } + if(len>1) { i = 0; - while(i < (len-1)) + len -= 1; + while(i < len) { - while(moudle->STATUS.B.TXFIFOLEVEL != 0); - IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) + + IfxQspi_writeTransmitFifo(moudle, *modata++); + if(midata) { - IfxQspi_read8(moudle,midata,1); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); midata++; } - else (void)moudle->RXEXIT.U; - modata++; - i++; + while(moudle->STATUS.B.TXFIFOLEVEL != 0); } } @@ -320,9 +330,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata IfxQspi_writeTransmitFifo(moudle, *modata); while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)moudle->RXEXIT.U; + if(midata) + { + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); + } } diff --git a/Example/Cpu1_Handles_Interrupts_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c b/Example/Cpu1_Handles_Interrupts_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c index 7402a8d..9b4b650 100644 --- a/Example/Cpu1_Handles_Interrupts_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c +++ b/Example/Cpu1_Handles_Interrupts_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c @@ -51,14 +51,14 @@ void lcd_writeIndex(uint8 dat) //写命令 { DC(0); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writeData(uint8 dat) //写数据 { DC(1); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writedata_16bit(uint16 dat) //向液晶屏写一个16位数据 @@ -68,7 +68,7 @@ void lcd_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; DC(1); - spi_mosi(TFT_SPIN,TFT_CS,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(TFT_SPIN,TFT_CS,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/Cpu1_Handles_Interrupts_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c b/Example/Cpu1_Handles_Interrupts_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c index 90098f7..5f3fd1e 100644 --- a/Example/Cpu1_Handles_Interrupts_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c +++ b/Example/Cpu1_Handles_Interrupts_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c @@ -52,7 +52,7 @@ void ips114_writeIndex(uint8 dat) //写命令 { IPS114_DC(0); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } @@ -66,7 +66,7 @@ void ips114_writeIndex(uint8 dat) //写 void ips114_writeData(uint8 dat) //写数据 { IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } //------------------------------------------------------------------------------------------------------------------- @@ -83,7 +83,7 @@ void ips114_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/Dual_Core_Demo/Libraries/doc/version.txt b/Example/Dual_Core_Demo/Libraries/doc/version.txt index 26c5f0e..f828db2 100644 --- a/Example/Dual_Core_Demo/Libraries/doc/version.txt +++ b/Example/Dual_Core_Demo/Libraries/doc/version.txt @@ -1,3 +1,6 @@ +V1.2.5 + 优化硬件SPI函数、SPI屏幕驱动,提高SPI屏幕刷新速度,IPS1.14屏幕显示总钻风188*120可达31帧,显示160*120可达37帧,TFT1.8屏幕显示总钻风160*120可达37帧。 + V1.2.4 修复systick_delay_ms函数在延时时间较长的时候,延时时间不正确的问题 diff --git a/Example/Dual_Core_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/Dual_Core_Demo/Libraries/seekfree_libraries/zf_spi.c index e3e7e68..6745f97 100644 --- a/Example/Dual_Core_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/Dual_Core_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -292,26 +292,36 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata bacon.B.TRAIL = 1; bacon.B.TPRE = 1; bacon.B.CS = cs_pin%102/6-3; + if(continuous) IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);//发送数据后CS继续保持为低 else IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); //每发送一个字节CS信号拉高一次 + if(midata) + { + //将之前fifo中的数据全读读取出来 + i = moudle->STATUS.B.RXFIFOLEVEL; + while(i--) + { + (uint8)IfxQspi_readReceiveFifo(moudle); + } + } + if(len>1) { i = 0; - while(i < (len-1)) + len -= 1; + while(i < len) { - while(moudle->STATUS.B.TXFIFOLEVEL != 0); - IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) + + IfxQspi_writeTransmitFifo(moudle, *modata++); + if(midata) { - IfxQspi_read8(moudle,midata,1); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); midata++; } - else (void)moudle->RXEXIT.U; - modata++; - i++; + while(moudle->STATUS.B.TXFIFOLEVEL != 0); } } @@ -320,9 +330,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata IfxQspi_writeTransmitFifo(moudle, *modata); while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)moudle->RXEXIT.U; + if(midata) + { + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); + } } diff --git a/Example/Dual_Core_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c b/Example/Dual_Core_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c index 7402a8d..9b4b650 100644 --- a/Example/Dual_Core_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c +++ b/Example/Dual_Core_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c @@ -51,14 +51,14 @@ void lcd_writeIndex(uint8 dat) //写命令 { DC(0); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writeData(uint8 dat) //写数据 { DC(1); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writedata_16bit(uint16 dat) //向液晶屏写一个16位数据 @@ -68,7 +68,7 @@ void lcd_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; DC(1); - spi_mosi(TFT_SPIN,TFT_CS,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(TFT_SPIN,TFT_CS,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/Dual_Core_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c b/Example/Dual_Core_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c index 90098f7..5f3fd1e 100644 --- a/Example/Dual_Core_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c +++ b/Example/Dual_Core_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c @@ -52,7 +52,7 @@ void ips114_writeIndex(uint8 dat) //写命令 { IPS114_DC(0); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } @@ -66,7 +66,7 @@ void ips114_writeIndex(uint8 dat) //写 void ips114_writeData(uint8 dat) //写数据 { IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } //------------------------------------------------------------------------------------------------------------------- @@ -83,7 +83,7 @@ void ips114_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/EEPROM_Demo/Libraries/doc/version.txt b/Example/EEPROM_Demo/Libraries/doc/version.txt index 26c5f0e..f828db2 100644 --- a/Example/EEPROM_Demo/Libraries/doc/version.txt +++ b/Example/EEPROM_Demo/Libraries/doc/version.txt @@ -1,3 +1,6 @@ +V1.2.5 + 优化硬件SPI函数、SPI屏幕驱动,提高SPI屏幕刷新速度,IPS1.14屏幕显示总钻风188*120可达31帧,显示160*120可达37帧,TFT1.8屏幕显示总钻风160*120可达37帧。 + V1.2.4 修复systick_delay_ms函数在延时时间较长的时候,延时时间不正确的问题 diff --git a/Example/EEPROM_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/EEPROM_Demo/Libraries/seekfree_libraries/zf_spi.c index e3e7e68..6745f97 100644 --- a/Example/EEPROM_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/EEPROM_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -292,26 +292,36 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata bacon.B.TRAIL = 1; bacon.B.TPRE = 1; bacon.B.CS = cs_pin%102/6-3; + if(continuous) IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);//发送数据后CS继续保持为低 else IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); //每发送一个字节CS信号拉高一次 + if(midata) + { + //将之前fifo中的数据全读读取出来 + i = moudle->STATUS.B.RXFIFOLEVEL; + while(i--) + { + (uint8)IfxQspi_readReceiveFifo(moudle); + } + } + if(len>1) { i = 0; - while(i < (len-1)) + len -= 1; + while(i < len) { - while(moudle->STATUS.B.TXFIFOLEVEL != 0); - IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) + + IfxQspi_writeTransmitFifo(moudle, *modata++); + if(midata) { - IfxQspi_read8(moudle,midata,1); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); midata++; } - else (void)moudle->RXEXIT.U; - modata++; - i++; + while(moudle->STATUS.B.TXFIFOLEVEL != 0); } } @@ -320,9 +330,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata IfxQspi_writeTransmitFifo(moudle, *modata); while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)moudle->RXEXIT.U; + if(midata) + { + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); + } } diff --git a/Example/EEPROM_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c b/Example/EEPROM_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c index 7402a8d..9b4b650 100644 --- a/Example/EEPROM_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c +++ b/Example/EEPROM_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c @@ -51,14 +51,14 @@ void lcd_writeIndex(uint8 dat) //写命令 { DC(0); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writeData(uint8 dat) //写数据 { DC(1); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writedata_16bit(uint16 dat) //向液晶屏写一个16位数据 @@ -68,7 +68,7 @@ void lcd_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; DC(1); - spi_mosi(TFT_SPIN,TFT_CS,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(TFT_SPIN,TFT_CS,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/EEPROM_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c b/Example/EEPROM_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c index 90098f7..5f3fd1e 100644 --- a/Example/EEPROM_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c +++ b/Example/EEPROM_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c @@ -52,7 +52,7 @@ void ips114_writeIndex(uint8 dat) //写命令 { IPS114_DC(0); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } @@ -66,7 +66,7 @@ void ips114_writeIndex(uint8 dat) //写 void ips114_writeData(uint8 dat) //写数据 { IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } //------------------------------------------------------------------------------------------------------------------- @@ -83,7 +83,7 @@ void ips114_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/Encoder_Demo/Libraries/doc/version.txt b/Example/Encoder_Demo/Libraries/doc/version.txt index 26c5f0e..f828db2 100644 --- a/Example/Encoder_Demo/Libraries/doc/version.txt +++ b/Example/Encoder_Demo/Libraries/doc/version.txt @@ -1,3 +1,6 @@ +V1.2.5 + 优化硬件SPI函数、SPI屏幕驱动,提高SPI屏幕刷新速度,IPS1.14屏幕显示总钻风188*120可达31帧,显示160*120可达37帧,TFT1.8屏幕显示总钻风160*120可达37帧。 + V1.2.4 修复systick_delay_ms函数在延时时间较长的时候,延时时间不正确的问题 diff --git a/Example/Encoder_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/Encoder_Demo/Libraries/seekfree_libraries/zf_spi.c index e3e7e68..6745f97 100644 --- a/Example/Encoder_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/Encoder_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -292,26 +292,36 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata bacon.B.TRAIL = 1; bacon.B.TPRE = 1; bacon.B.CS = cs_pin%102/6-3; + if(continuous) IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);//发送数据后CS继续保持为低 else IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); //每发送一个字节CS信号拉高一次 + if(midata) + { + //将之前fifo中的数据全读读取出来 + i = moudle->STATUS.B.RXFIFOLEVEL; + while(i--) + { + (uint8)IfxQspi_readReceiveFifo(moudle); + } + } + if(len>1) { i = 0; - while(i < (len-1)) + len -= 1; + while(i < len) { - while(moudle->STATUS.B.TXFIFOLEVEL != 0); - IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) + + IfxQspi_writeTransmitFifo(moudle, *modata++); + if(midata) { - IfxQspi_read8(moudle,midata,1); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); midata++; } - else (void)moudle->RXEXIT.U; - modata++; - i++; + while(moudle->STATUS.B.TXFIFOLEVEL != 0); } } @@ -320,9 +330,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata IfxQspi_writeTransmitFifo(moudle, *modata); while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)moudle->RXEXIT.U; + if(midata) + { + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); + } } diff --git a/Example/Encoder_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c b/Example/Encoder_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c index 7402a8d..9b4b650 100644 --- a/Example/Encoder_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c +++ b/Example/Encoder_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c @@ -51,14 +51,14 @@ void lcd_writeIndex(uint8 dat) //写命令 { DC(0); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writeData(uint8 dat) //写数据 { DC(1); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writedata_16bit(uint16 dat) //向液晶屏写一个16位数据 @@ -68,7 +68,7 @@ void lcd_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; DC(1); - spi_mosi(TFT_SPIN,TFT_CS,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(TFT_SPIN,TFT_CS,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/Encoder_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c b/Example/Encoder_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c index 90098f7..5f3fd1e 100644 --- a/Example/Encoder_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c +++ b/Example/Encoder_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c @@ -52,7 +52,7 @@ void ips114_writeIndex(uint8 dat) //写命令 { IPS114_DC(0); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } @@ -66,7 +66,7 @@ void ips114_writeIndex(uint8 dat) //写 void ips114_writeData(uint8 dat) //写数据 { IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } //------------------------------------------------------------------------------------------------------------------- @@ -83,7 +83,7 @@ void ips114_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/FFT_Demo/Libraries/doc/version.txt b/Example/FFT_Demo/Libraries/doc/version.txt index 26c5f0e..f828db2 100644 --- a/Example/FFT_Demo/Libraries/doc/version.txt +++ b/Example/FFT_Demo/Libraries/doc/version.txt @@ -1,3 +1,6 @@ +V1.2.5 + 优化硬件SPI函数、SPI屏幕驱动,提高SPI屏幕刷新速度,IPS1.14屏幕显示总钻风188*120可达31帧,显示160*120可达37帧,TFT1.8屏幕显示总钻风160*120可达37帧。 + V1.2.4 修复systick_delay_ms函数在延时时间较长的时候,延时时间不正确的问题 diff --git a/Example/FFT_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/FFT_Demo/Libraries/seekfree_libraries/zf_spi.c index e3e7e68..6745f97 100644 --- a/Example/FFT_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/FFT_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -292,26 +292,36 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata bacon.B.TRAIL = 1; bacon.B.TPRE = 1; bacon.B.CS = cs_pin%102/6-3; + if(continuous) IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);//发送数据后CS继续保持为低 else IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); //每发送一个字节CS信号拉高一次 + if(midata) + { + //将之前fifo中的数据全读读取出来 + i = moudle->STATUS.B.RXFIFOLEVEL; + while(i--) + { + (uint8)IfxQspi_readReceiveFifo(moudle); + } + } + if(len>1) { i = 0; - while(i < (len-1)) + len -= 1; + while(i < len) { - while(moudle->STATUS.B.TXFIFOLEVEL != 0); - IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) + + IfxQspi_writeTransmitFifo(moudle, *modata++); + if(midata) { - IfxQspi_read8(moudle,midata,1); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); midata++; } - else (void)moudle->RXEXIT.U; - modata++; - i++; + while(moudle->STATUS.B.TXFIFOLEVEL != 0); } } @@ -320,9 +330,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata IfxQspi_writeTransmitFifo(moudle, *modata); while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)moudle->RXEXIT.U; + if(midata) + { + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); + } } diff --git a/Example/FFT_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c b/Example/FFT_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c index 7402a8d..9b4b650 100644 --- a/Example/FFT_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c +++ b/Example/FFT_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c @@ -51,14 +51,14 @@ void lcd_writeIndex(uint8 dat) //写命令 { DC(0); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writeData(uint8 dat) //写数据 { DC(1); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writedata_16bit(uint16 dat) //向液晶屏写一个16位数据 @@ -68,7 +68,7 @@ void lcd_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; DC(1); - spi_mosi(TFT_SPIN,TFT_CS,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(TFT_SPIN,TFT_CS,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/FFT_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c b/Example/FFT_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c index 90098f7..5f3fd1e 100644 --- a/Example/FFT_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c +++ b/Example/FFT_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c @@ -52,7 +52,7 @@ void ips114_writeIndex(uint8 dat) //写命令 { IPS114_DC(0); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } @@ -66,7 +66,7 @@ void ips114_writeIndex(uint8 dat) //写 void ips114_writeData(uint8 dat) //写数据 { IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } //------------------------------------------------------------------------------------------------------------------- @@ -83,7 +83,7 @@ void ips114_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/GPIO_Interrupt_Demo/Libraries/doc/version.txt b/Example/GPIO_Interrupt_Demo/Libraries/doc/version.txt index 26c5f0e..f828db2 100644 --- a/Example/GPIO_Interrupt_Demo/Libraries/doc/version.txt +++ b/Example/GPIO_Interrupt_Demo/Libraries/doc/version.txt @@ -1,3 +1,6 @@ +V1.2.5 + 优化硬件SPI函数、SPI屏幕驱动,提高SPI屏幕刷新速度,IPS1.14屏幕显示总钻风188*120可达31帧,显示160*120可达37帧,TFT1.8屏幕显示总钻风160*120可达37帧。 + V1.2.4 修复systick_delay_ms函数在延时时间较长的时候,延时时间不正确的问题 diff --git a/Example/GPIO_Interrupt_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/GPIO_Interrupt_Demo/Libraries/seekfree_libraries/zf_spi.c index e3e7e68..6745f97 100644 --- a/Example/GPIO_Interrupt_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/GPIO_Interrupt_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -292,26 +292,36 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata bacon.B.TRAIL = 1; bacon.B.TPRE = 1; bacon.B.CS = cs_pin%102/6-3; + if(continuous) IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);//发送数据后CS继续保持为低 else IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); //每发送一个字节CS信号拉高一次 + if(midata) + { + //将之前fifo中的数据全读读取出来 + i = moudle->STATUS.B.RXFIFOLEVEL; + while(i--) + { + (uint8)IfxQspi_readReceiveFifo(moudle); + } + } + if(len>1) { i = 0; - while(i < (len-1)) + len -= 1; + while(i < len) { - while(moudle->STATUS.B.TXFIFOLEVEL != 0); - IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) + + IfxQspi_writeTransmitFifo(moudle, *modata++); + if(midata) { - IfxQspi_read8(moudle,midata,1); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); midata++; } - else (void)moudle->RXEXIT.U; - modata++; - i++; + while(moudle->STATUS.B.TXFIFOLEVEL != 0); } } @@ -320,9 +330,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata IfxQspi_writeTransmitFifo(moudle, *modata); while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)moudle->RXEXIT.U; + if(midata) + { + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); + } } diff --git a/Example/GPIO_Interrupt_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c b/Example/GPIO_Interrupt_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c index 7402a8d..9b4b650 100644 --- a/Example/GPIO_Interrupt_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c +++ b/Example/GPIO_Interrupt_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c @@ -51,14 +51,14 @@ void lcd_writeIndex(uint8 dat) //写命令 { DC(0); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writeData(uint8 dat) //写数据 { DC(1); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writedata_16bit(uint16 dat) //向液晶屏写一个16位数据 @@ -68,7 +68,7 @@ void lcd_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; DC(1); - spi_mosi(TFT_SPIN,TFT_CS,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(TFT_SPIN,TFT_CS,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/GPIO_Interrupt_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c b/Example/GPIO_Interrupt_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c index 90098f7..5f3fd1e 100644 --- a/Example/GPIO_Interrupt_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c +++ b/Example/GPIO_Interrupt_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c @@ -52,7 +52,7 @@ void ips114_writeIndex(uint8 dat) //写命令 { IPS114_DC(0); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } @@ -66,7 +66,7 @@ void ips114_writeIndex(uint8 dat) //写 void ips114_writeData(uint8 dat) //写数据 { IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } //------------------------------------------------------------------------------------------------------------------- @@ -83,7 +83,7 @@ void ips114_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/Interrupt_Priority_Set_Demo/Libraries/doc/version.txt b/Example/Interrupt_Priority_Set_Demo/Libraries/doc/version.txt index 26c5f0e..f828db2 100644 --- a/Example/Interrupt_Priority_Set_Demo/Libraries/doc/version.txt +++ b/Example/Interrupt_Priority_Set_Demo/Libraries/doc/version.txt @@ -1,3 +1,6 @@ +V1.2.5 + 优化硬件SPI函数、SPI屏幕驱动,提高SPI屏幕刷新速度,IPS1.14屏幕显示总钻风188*120可达31帧,显示160*120可达37帧,TFT1.8屏幕显示总钻风160*120可达37帧。 + V1.2.4 修复systick_delay_ms函数在延时时间较长的时候,延时时间不正确的问题 diff --git a/Example/Interrupt_Priority_Set_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/Interrupt_Priority_Set_Demo/Libraries/seekfree_libraries/zf_spi.c index e3e7e68..6745f97 100644 --- a/Example/Interrupt_Priority_Set_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/Interrupt_Priority_Set_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -292,26 +292,36 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata bacon.B.TRAIL = 1; bacon.B.TPRE = 1; bacon.B.CS = cs_pin%102/6-3; + if(continuous) IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);//发送数据后CS继续保持为低 else IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); //每发送一个字节CS信号拉高一次 + if(midata) + { + //将之前fifo中的数据全读读取出来 + i = moudle->STATUS.B.RXFIFOLEVEL; + while(i--) + { + (uint8)IfxQspi_readReceiveFifo(moudle); + } + } + if(len>1) { i = 0; - while(i < (len-1)) + len -= 1; + while(i < len) { - while(moudle->STATUS.B.TXFIFOLEVEL != 0); - IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) + + IfxQspi_writeTransmitFifo(moudle, *modata++); + if(midata) { - IfxQspi_read8(moudle,midata,1); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); midata++; } - else (void)moudle->RXEXIT.U; - modata++; - i++; + while(moudle->STATUS.B.TXFIFOLEVEL != 0); } } @@ -320,9 +330,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata IfxQspi_writeTransmitFifo(moudle, *modata); while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)moudle->RXEXIT.U; + if(midata) + { + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); + } } diff --git a/Example/Interrupt_Priority_Set_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c b/Example/Interrupt_Priority_Set_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c index 7402a8d..9b4b650 100644 --- a/Example/Interrupt_Priority_Set_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c +++ b/Example/Interrupt_Priority_Set_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c @@ -51,14 +51,14 @@ void lcd_writeIndex(uint8 dat) //写命令 { DC(0); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writeData(uint8 dat) //写数据 { DC(1); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writedata_16bit(uint16 dat) //向液晶屏写一个16位数据 @@ -68,7 +68,7 @@ void lcd_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; DC(1); - spi_mosi(TFT_SPIN,TFT_CS,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(TFT_SPIN,TFT_CS,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/Interrupt_Priority_Set_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c b/Example/Interrupt_Priority_Set_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c index 90098f7..5f3fd1e 100644 --- a/Example/Interrupt_Priority_Set_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c +++ b/Example/Interrupt_Priority_Set_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c @@ -52,7 +52,7 @@ void ips114_writeIndex(uint8 dat) //写命令 { IPS114_DC(0); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } @@ -66,7 +66,7 @@ void ips114_writeIndex(uint8 dat) //写 void ips114_writeData(uint8 dat) //写数据 { IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } //------------------------------------------------------------------------------------------------------------------- @@ -83,7 +83,7 @@ void ips114_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/LED_Blink_Demo/Libraries/doc/version.txt b/Example/LED_Blink_Demo/Libraries/doc/version.txt index 26c5f0e..f828db2 100644 --- a/Example/LED_Blink_Demo/Libraries/doc/version.txt +++ b/Example/LED_Blink_Demo/Libraries/doc/version.txt @@ -1,3 +1,6 @@ +V1.2.5 + 优化硬件SPI函数、SPI屏幕驱动,提高SPI屏幕刷新速度,IPS1.14屏幕显示总钻风188*120可达31帧,显示160*120可达37帧,TFT1.8屏幕显示总钻风160*120可达37帧。 + V1.2.4 修复systick_delay_ms函数在延时时间较长的时候,延时时间不正确的问题 diff --git a/Example/LED_Blink_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/LED_Blink_Demo/Libraries/seekfree_libraries/zf_spi.c index e3e7e68..6745f97 100644 --- a/Example/LED_Blink_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/LED_Blink_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -292,26 +292,36 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata bacon.B.TRAIL = 1; bacon.B.TPRE = 1; bacon.B.CS = cs_pin%102/6-3; + if(continuous) IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);//发送数据后CS继续保持为低 else IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); //每发送一个字节CS信号拉高一次 + if(midata) + { + //将之前fifo中的数据全读读取出来 + i = moudle->STATUS.B.RXFIFOLEVEL; + while(i--) + { + (uint8)IfxQspi_readReceiveFifo(moudle); + } + } + if(len>1) { i = 0; - while(i < (len-1)) + len -= 1; + while(i < len) { - while(moudle->STATUS.B.TXFIFOLEVEL != 0); - IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) + + IfxQspi_writeTransmitFifo(moudle, *modata++); + if(midata) { - IfxQspi_read8(moudle,midata,1); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); midata++; } - else (void)moudle->RXEXIT.U; - modata++; - i++; + while(moudle->STATUS.B.TXFIFOLEVEL != 0); } } @@ -320,9 +330,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata IfxQspi_writeTransmitFifo(moudle, *modata); while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)moudle->RXEXIT.U; + if(midata) + { + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); + } } diff --git a/Example/LED_Blink_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c b/Example/LED_Blink_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c index 7402a8d..9b4b650 100644 --- a/Example/LED_Blink_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c +++ b/Example/LED_Blink_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c @@ -51,14 +51,14 @@ void lcd_writeIndex(uint8 dat) //写命令 { DC(0); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writeData(uint8 dat) //写数据 { DC(1); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writedata_16bit(uint16 dat) //向液晶屏写一个16位数据 @@ -68,7 +68,7 @@ void lcd_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; DC(1); - spi_mosi(TFT_SPIN,TFT_CS,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(TFT_SPIN,TFT_CS,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/LED_Blink_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c b/Example/LED_Blink_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c index 90098f7..5f3fd1e 100644 --- a/Example/LED_Blink_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c +++ b/Example/LED_Blink_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c @@ -52,7 +52,7 @@ void ips114_writeIndex(uint8 dat) //写命令 { IPS114_DC(0); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } @@ -66,7 +66,7 @@ void ips114_writeIndex(uint8 dat) //写 void ips114_writeData(uint8 dat) //写数据 { IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } //------------------------------------------------------------------------------------------------------------------- @@ -83,7 +83,7 @@ void ips114_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/PIT_Demo/Libraries/doc/version.txt b/Example/PIT_Demo/Libraries/doc/version.txt index 26c5f0e..f828db2 100644 --- a/Example/PIT_Demo/Libraries/doc/version.txt +++ b/Example/PIT_Demo/Libraries/doc/version.txt @@ -1,3 +1,6 @@ +V1.2.5 + 优化硬件SPI函数、SPI屏幕驱动,提高SPI屏幕刷新速度,IPS1.14屏幕显示总钻风188*120可达31帧,显示160*120可达37帧,TFT1.8屏幕显示总钻风160*120可达37帧。 + V1.2.4 修复systick_delay_ms函数在延时时间较长的时候,延时时间不正确的问题 diff --git a/Example/PIT_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/PIT_Demo/Libraries/seekfree_libraries/zf_spi.c index e3e7e68..6745f97 100644 --- a/Example/PIT_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/PIT_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -292,26 +292,36 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata bacon.B.TRAIL = 1; bacon.B.TPRE = 1; bacon.B.CS = cs_pin%102/6-3; + if(continuous) IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);//发送数据后CS继续保持为低 else IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); //每发送一个字节CS信号拉高一次 + if(midata) + { + //将之前fifo中的数据全读读取出来 + i = moudle->STATUS.B.RXFIFOLEVEL; + while(i--) + { + (uint8)IfxQspi_readReceiveFifo(moudle); + } + } + if(len>1) { i = 0; - while(i < (len-1)) + len -= 1; + while(i < len) { - while(moudle->STATUS.B.TXFIFOLEVEL != 0); - IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) + + IfxQspi_writeTransmitFifo(moudle, *modata++); + if(midata) { - IfxQspi_read8(moudle,midata,1); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); midata++; } - else (void)moudle->RXEXIT.U; - modata++; - i++; + while(moudle->STATUS.B.TXFIFOLEVEL != 0); } } @@ -320,9 +330,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata IfxQspi_writeTransmitFifo(moudle, *modata); while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)moudle->RXEXIT.U; + if(midata) + { + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); + } } diff --git a/Example/PIT_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c b/Example/PIT_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c index 7402a8d..9b4b650 100644 --- a/Example/PIT_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c +++ b/Example/PIT_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c @@ -51,14 +51,14 @@ void lcd_writeIndex(uint8 dat) //写命令 { DC(0); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writeData(uint8 dat) //写数据 { DC(1); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writedata_16bit(uint16 dat) //向液晶屏写一个16位数据 @@ -68,7 +68,7 @@ void lcd_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; DC(1); - spi_mosi(TFT_SPIN,TFT_CS,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(TFT_SPIN,TFT_CS,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/PIT_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c b/Example/PIT_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c index 90098f7..5f3fd1e 100644 --- a/Example/PIT_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c +++ b/Example/PIT_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c @@ -52,7 +52,7 @@ void ips114_writeIndex(uint8 dat) //写命令 { IPS114_DC(0); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } @@ -66,7 +66,7 @@ void ips114_writeIndex(uint8 dat) //写 void ips114_writeData(uint8 dat) //写数据 { IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } //------------------------------------------------------------------------------------------------------------------- @@ -83,7 +83,7 @@ void ips114_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/PWM_Demo/Libraries/doc/version.txt b/Example/PWM_Demo/Libraries/doc/version.txt index 26c5f0e..f828db2 100644 --- a/Example/PWM_Demo/Libraries/doc/version.txt +++ b/Example/PWM_Demo/Libraries/doc/version.txt @@ -1,3 +1,6 @@ +V1.2.5 + 优化硬件SPI函数、SPI屏幕驱动,提高SPI屏幕刷新速度,IPS1.14屏幕显示总钻风188*120可达31帧,显示160*120可达37帧,TFT1.8屏幕显示总钻风160*120可达37帧。 + V1.2.4 修复systick_delay_ms函数在延时时间较长的时候,延时时间不正确的问题 diff --git a/Example/PWM_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/PWM_Demo/Libraries/seekfree_libraries/zf_spi.c index e3e7e68..6745f97 100644 --- a/Example/PWM_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/PWM_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -292,26 +292,36 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata bacon.B.TRAIL = 1; bacon.B.TPRE = 1; bacon.B.CS = cs_pin%102/6-3; + if(continuous) IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);//发送数据后CS继续保持为低 else IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); //每发送一个字节CS信号拉高一次 + if(midata) + { + //将之前fifo中的数据全读读取出来 + i = moudle->STATUS.B.RXFIFOLEVEL; + while(i--) + { + (uint8)IfxQspi_readReceiveFifo(moudle); + } + } + if(len>1) { i = 0; - while(i < (len-1)) + len -= 1; + while(i < len) { - while(moudle->STATUS.B.TXFIFOLEVEL != 0); - IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) + + IfxQspi_writeTransmitFifo(moudle, *modata++); + if(midata) { - IfxQspi_read8(moudle,midata,1); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); midata++; } - else (void)moudle->RXEXIT.U; - modata++; - i++; + while(moudle->STATUS.B.TXFIFOLEVEL != 0); } } @@ -320,9 +330,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata IfxQspi_writeTransmitFifo(moudle, *modata); while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)moudle->RXEXIT.U; + if(midata) + { + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); + } } diff --git a/Example/PWM_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c b/Example/PWM_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c index 7402a8d..9b4b650 100644 --- a/Example/PWM_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c +++ b/Example/PWM_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c @@ -51,14 +51,14 @@ void lcd_writeIndex(uint8 dat) //写命令 { DC(0); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writeData(uint8 dat) //写数据 { DC(1); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writedata_16bit(uint16 dat) //向液晶屏写一个16位数据 @@ -68,7 +68,7 @@ void lcd_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; DC(1); - spi_mosi(TFT_SPIN,TFT_CS,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(TFT_SPIN,TFT_CS,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/PWM_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c b/Example/PWM_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c index 90098f7..5f3fd1e 100644 --- a/Example/PWM_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c +++ b/Example/PWM_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c @@ -52,7 +52,7 @@ void ips114_writeIndex(uint8 dat) //写命令 { IPS114_DC(0); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } @@ -66,7 +66,7 @@ void ips114_writeIndex(uint8 dat) //写 void ips114_writeData(uint8 dat) //写数据 { IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } //------------------------------------------------------------------------------------------------------------------- @@ -83,7 +83,7 @@ void ips114_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/Printf_Demo/Libraries/doc/version.txt b/Example/Printf_Demo/Libraries/doc/version.txt index 26c5f0e..f828db2 100644 --- a/Example/Printf_Demo/Libraries/doc/version.txt +++ b/Example/Printf_Demo/Libraries/doc/version.txt @@ -1,3 +1,6 @@ +V1.2.5 + 优化硬件SPI函数、SPI屏幕驱动,提高SPI屏幕刷新速度,IPS1.14屏幕显示总钻风188*120可达31帧,显示160*120可达37帧,TFT1.8屏幕显示总钻风160*120可达37帧。 + V1.2.4 修复systick_delay_ms函数在延时时间较长的时候,延时时间不正确的问题 diff --git a/Example/Printf_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/Printf_Demo/Libraries/seekfree_libraries/zf_spi.c index e3e7e68..6745f97 100644 --- a/Example/Printf_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/Printf_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -292,26 +292,36 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata bacon.B.TRAIL = 1; bacon.B.TPRE = 1; bacon.B.CS = cs_pin%102/6-3; + if(continuous) IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);//发送数据后CS继续保持为低 else IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); //每发送一个字节CS信号拉高一次 + if(midata) + { + //将之前fifo中的数据全读读取出来 + i = moudle->STATUS.B.RXFIFOLEVEL; + while(i--) + { + (uint8)IfxQspi_readReceiveFifo(moudle); + } + } + if(len>1) { i = 0; - while(i < (len-1)) + len -= 1; + while(i < len) { - while(moudle->STATUS.B.TXFIFOLEVEL != 0); - IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) + + IfxQspi_writeTransmitFifo(moudle, *modata++); + if(midata) { - IfxQspi_read8(moudle,midata,1); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); midata++; } - else (void)moudle->RXEXIT.U; - modata++; - i++; + while(moudle->STATUS.B.TXFIFOLEVEL != 0); } } @@ -320,9 +330,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata IfxQspi_writeTransmitFifo(moudle, *modata); while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)moudle->RXEXIT.U; + if(midata) + { + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); + } } diff --git a/Example/Printf_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c b/Example/Printf_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c index 7402a8d..9b4b650 100644 --- a/Example/Printf_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c +++ b/Example/Printf_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c @@ -51,14 +51,14 @@ void lcd_writeIndex(uint8 dat) //写命令 { DC(0); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writeData(uint8 dat) //写数据 { DC(1); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writedata_16bit(uint16 dat) //向液晶屏写一个16位数据 @@ -68,7 +68,7 @@ void lcd_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; DC(1); - spi_mosi(TFT_SPIN,TFT_CS,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(TFT_SPIN,TFT_CS,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/Printf_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c b/Example/Printf_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c index 90098f7..5f3fd1e 100644 --- a/Example/Printf_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c +++ b/Example/Printf_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c @@ -52,7 +52,7 @@ void ips114_writeIndex(uint8 dat) //写命令 { IPS114_DC(0); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } @@ -66,7 +66,7 @@ void ips114_writeIndex(uint8 dat) //写 void ips114_writeData(uint8 dat) //写数据 { IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } //------------------------------------------------------------------------------------------------------------------- @@ -83,7 +83,7 @@ void ips114_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/Specifies_Variable_Or_Code_Location_Demo/Libraries/doc/version.txt b/Example/Specifies_Variable_Or_Code_Location_Demo/Libraries/doc/version.txt index 26c5f0e..f828db2 100644 --- a/Example/Specifies_Variable_Or_Code_Location_Demo/Libraries/doc/version.txt +++ b/Example/Specifies_Variable_Or_Code_Location_Demo/Libraries/doc/version.txt @@ -1,3 +1,6 @@ +V1.2.5 + 优化硬件SPI函数、SPI屏幕驱动,提高SPI屏幕刷新速度,IPS1.14屏幕显示总钻风188*120可达31帧,显示160*120可达37帧,TFT1.8屏幕显示总钻风160*120可达37帧。 + V1.2.4 修复systick_delay_ms函数在延时时间较长的时候,延时时间不正确的问题 diff --git a/Example/Specifies_Variable_Or_Code_Location_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/Specifies_Variable_Or_Code_Location_Demo/Libraries/seekfree_libraries/zf_spi.c index e3e7e68..6745f97 100644 --- a/Example/Specifies_Variable_Or_Code_Location_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/Specifies_Variable_Or_Code_Location_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -292,26 +292,36 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata bacon.B.TRAIL = 1; bacon.B.TPRE = 1; bacon.B.CS = cs_pin%102/6-3; + if(continuous) IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);//发送数据后CS继续保持为低 else IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); //每发送一个字节CS信号拉高一次 + if(midata) + { + //将之前fifo中的数据全读读取出来 + i = moudle->STATUS.B.RXFIFOLEVEL; + while(i--) + { + (uint8)IfxQspi_readReceiveFifo(moudle); + } + } + if(len>1) { i = 0; - while(i < (len-1)) + len -= 1; + while(i < len) { - while(moudle->STATUS.B.TXFIFOLEVEL != 0); - IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) + + IfxQspi_writeTransmitFifo(moudle, *modata++); + if(midata) { - IfxQspi_read8(moudle,midata,1); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); midata++; } - else (void)moudle->RXEXIT.U; - modata++; - i++; + while(moudle->STATUS.B.TXFIFOLEVEL != 0); } } @@ -320,9 +330,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata IfxQspi_writeTransmitFifo(moudle, *modata); while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)moudle->RXEXIT.U; + if(midata) + { + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); + } } diff --git a/Example/Specifies_Variable_Or_Code_Location_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c b/Example/Specifies_Variable_Or_Code_Location_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c index 7402a8d..9b4b650 100644 --- a/Example/Specifies_Variable_Or_Code_Location_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c +++ b/Example/Specifies_Variable_Or_Code_Location_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c @@ -51,14 +51,14 @@ void lcd_writeIndex(uint8 dat) //写命令 { DC(0); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writeData(uint8 dat) //写数据 { DC(1); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writedata_16bit(uint16 dat) //向液晶屏写一个16位数据 @@ -68,7 +68,7 @@ void lcd_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; DC(1); - spi_mosi(TFT_SPIN,TFT_CS,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(TFT_SPIN,TFT_CS,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/Specifies_Variable_Or_Code_Location_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c b/Example/Specifies_Variable_Or_Code_Location_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c index 90098f7..5f3fd1e 100644 --- a/Example/Specifies_Variable_Or_Code_Location_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c +++ b/Example/Specifies_Variable_Or_Code_Location_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c @@ -52,7 +52,7 @@ void ips114_writeIndex(uint8 dat) //写命令 { IPS114_DC(0); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } @@ -66,7 +66,7 @@ void ips114_writeIndex(uint8 dat) //写 void ips114_writeData(uint8 dat) //写数据 { IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } //------------------------------------------------------------------------------------------------------------------- @@ -83,7 +83,7 @@ void ips114_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/Systick_Demo/Libraries/doc/version.txt b/Example/Systick_Demo/Libraries/doc/version.txt index 26c5f0e..f828db2 100644 --- a/Example/Systick_Demo/Libraries/doc/version.txt +++ b/Example/Systick_Demo/Libraries/doc/version.txt @@ -1,3 +1,6 @@ +V1.2.5 + 优化硬件SPI函数、SPI屏幕驱动,提高SPI屏幕刷新速度,IPS1.14屏幕显示总钻风188*120可达31帧,显示160*120可达37帧,TFT1.8屏幕显示总钻风160*120可达37帧。 + V1.2.4 修复systick_delay_ms函数在延时时间较长的时候,延时时间不正确的问题 diff --git a/Example/Systick_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/Systick_Demo/Libraries/seekfree_libraries/zf_spi.c index e3e7e68..6745f97 100644 --- a/Example/Systick_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/Systick_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -292,26 +292,36 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata bacon.B.TRAIL = 1; bacon.B.TPRE = 1; bacon.B.CS = cs_pin%102/6-3; + if(continuous) IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);//发送数据后CS继续保持为低 else IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); //每发送一个字节CS信号拉高一次 + if(midata) + { + //将之前fifo中的数据全读读取出来 + i = moudle->STATUS.B.RXFIFOLEVEL; + while(i--) + { + (uint8)IfxQspi_readReceiveFifo(moudle); + } + } + if(len>1) { i = 0; - while(i < (len-1)) + len -= 1; + while(i < len) { - while(moudle->STATUS.B.TXFIFOLEVEL != 0); - IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) + + IfxQspi_writeTransmitFifo(moudle, *modata++); + if(midata) { - IfxQspi_read8(moudle,midata,1); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); midata++; } - else (void)moudle->RXEXIT.U; - modata++; - i++; + while(moudle->STATUS.B.TXFIFOLEVEL != 0); } } @@ -320,9 +330,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata IfxQspi_writeTransmitFifo(moudle, *modata); while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)moudle->RXEXIT.U; + if(midata) + { + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); + } } diff --git a/Example/Systick_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c b/Example/Systick_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c index 7402a8d..9b4b650 100644 --- a/Example/Systick_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c +++ b/Example/Systick_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c @@ -51,14 +51,14 @@ void lcd_writeIndex(uint8 dat) //写命令 { DC(0); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writeData(uint8 dat) //写数据 { DC(1); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writedata_16bit(uint16 dat) //向液晶屏写一个16位数据 @@ -68,7 +68,7 @@ void lcd_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; DC(1); - spi_mosi(TFT_SPIN,TFT_CS,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(TFT_SPIN,TFT_CS,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/Systick_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c b/Example/Systick_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c index 90098f7..5f3fd1e 100644 --- a/Example/Systick_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c +++ b/Example/Systick_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c @@ -52,7 +52,7 @@ void ips114_writeIndex(uint8 dat) //写命令 { IPS114_DC(0); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } @@ -66,7 +66,7 @@ void ips114_writeIndex(uint8 dat) //写 void ips114_writeData(uint8 dat) //写数据 { IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } //------------------------------------------------------------------------------------------------------------------- @@ -83,7 +83,7 @@ void ips114_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/UART_Demo/Libraries/doc/version.txt b/Example/UART_Demo/Libraries/doc/version.txt index 26c5f0e..f828db2 100644 --- a/Example/UART_Demo/Libraries/doc/version.txt +++ b/Example/UART_Demo/Libraries/doc/version.txt @@ -1,3 +1,6 @@ +V1.2.5 + 优化硬件SPI函数、SPI屏幕驱动,提高SPI屏幕刷新速度,IPS1.14屏幕显示总钻风188*120可达31帧,显示160*120可达37帧,TFT1.8屏幕显示总钻风160*120可达37帧。 + V1.2.4 修复systick_delay_ms函数在延时时间较长的时候,延时时间不正确的问题 diff --git a/Example/UART_Demo/Libraries/seekfree_libraries/zf_spi.c b/Example/UART_Demo/Libraries/seekfree_libraries/zf_spi.c index e3e7e68..6745f97 100644 --- a/Example/UART_Demo/Libraries/seekfree_libraries/zf_spi.c +++ b/Example/UART_Demo/Libraries/seekfree_libraries/zf_spi.c @@ -292,26 +292,36 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata bacon.B.TRAIL = 1; bacon.B.TPRE = 1; bacon.B.CS = cs_pin%102/6-3; + if(continuous) IfxQspi_writeBasicConfigurationBeginStream(moudle, bacon.U);//发送数据后CS继续保持为低 else IfxQspi_writeBasicConfigurationEndStream(moudle, bacon.U); //每发送一个字节CS信号拉高一次 + if(midata) + { + //将之前fifo中的数据全读读取出来 + i = moudle->STATUS.B.RXFIFOLEVEL; + while(i--) + { + (uint8)IfxQspi_readReceiveFifo(moudle); + } + } + if(len>1) { i = 0; - while(i < (len-1)) + len -= 1; + while(i < len) { - while(moudle->STATUS.B.TXFIFOLEVEL != 0); - IfxQspi_write8(moudle, IfxQspi_ChannelId_0, modata, 1); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) + + IfxQspi_writeTransmitFifo(moudle, *modata++); + if(midata) { - IfxQspi_read8(moudle,midata,1); + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); midata++; } - else (void)moudle->RXEXIT.U; - modata++; - i++; + while(moudle->STATUS.B.TXFIFOLEVEL != 0); } } @@ -320,9 +330,11 @@ void spi_mosi(SPIN_enum spi_n, SPI_PIN_enum cs_pin, uint8 *modata, uint8 *midata IfxQspi_writeTransmitFifo(moudle, *modata); while(moudle->STATUS.B.TXFIFOLEVEL != 0); - while(moudle->STATUS.B.RXFIFOLEVEL == 0); - if(NULL != midata) IfxQspi_read8(moudle,midata,1); - else (void)moudle->RXEXIT.U; + if(midata) + { + while(moudle->STATUS.B.RXFIFOLEVEL == 0); + *midata = (uint8)IfxQspi_readReceiveFifo(moudle); + } } diff --git a/Example/UART_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c b/Example/UART_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c index 7402a8d..9b4b650 100644 --- a/Example/UART_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c +++ b/Example/UART_Demo/Libraries/seekfree_peripheral/SEEKFREE_18TFT.c @@ -51,14 +51,14 @@ void lcd_writeIndex(uint8 dat) //写命令 { DC(0); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writeData(uint8 dat) //写数据 { DC(1); - spi_mosi(TFT_SPIN,TFT_CS,&dat,&dat,1,1); + spi_mosi(TFT_SPIN,TFT_CS,&dat,NULL,1,1); } void lcd_writedata_16bit(uint16 dat) //向液晶屏写一个16位数据 @@ -68,7 +68,7 @@ void lcd_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; DC(1); - spi_mosi(TFT_SPIN,TFT_CS,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(TFT_SPIN,TFT_CS,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Example/UART_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c b/Example/UART_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c index 90098f7..5f3fd1e 100644 --- a/Example/UART_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c +++ b/Example/UART_Demo/Libraries/seekfree_peripheral/SEEKFREE_IPS114_SPI.c @@ -52,7 +52,7 @@ void ips114_writeIndex(uint8 dat) //写命令 { IPS114_DC(0); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } @@ -66,7 +66,7 @@ void ips114_writeIndex(uint8 dat) //写 void ips114_writeData(uint8 dat) //写数据 { IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,&dat,1,1); + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,&dat,NULL,1,1); } //------------------------------------------------------------------------------------------------------------------- @@ -83,7 +83,7 @@ void ips114_writedata_16bit(uint16 dat) // dat1[1] = (uint8)dat; IPS114_DC(1); - spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,dat1,2,1); //写入数据 高位在前 低位在后 + spi_mosi(IPS114_SPIN_PIN,IPS114_CS_PIN,dat1,NULL,2,1); //写入数据 高位在前 低位在后 } //------------------------------------------------------------------------------------------------------------------- diff --git a/Seekfree_TC264_Opensource_Library/.cproject b/Seekfree_TC264_Opensource_Library/.cproject index d145b37..1ec84df 100644 --- a/Seekfree_TC264_Opensource_Library/.cproject +++ b/Seekfree_TC264_Opensource_Library/.cproject @@ -43,291 +43,291 @@ @@ -337,6 +337,10 @@ +