Semi working DMA code for the display driver! So excited! Now to work out the bugs :)
This commit is contained in:
parent
26b7ef6f6d
commit
14d70c8afd
8 changed files with 4921 additions and 6040 deletions
|
@ -179,13 +179,13 @@
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn.594279191.1661284885" name="Enable extra warnings (-Wextra)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn.594279191"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn.594279191.1661284885" name="Enable extra warnings (-Wextra)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn.594279191"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding.2010758088.550463969" name="Assume freestanding environment (-ffreestanding)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding.2010758088"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding.2010758088.550463969" name="Assume freestanding environment (-ffreestanding)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding.2010758088"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nomoveloopinvariants.519889803.937775351" name="Disable loop invariant move (-fno-move-loop-invariants)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nomoveloopinvariants.519889803"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nomoveloopinvariants.519889803.937775351" name="Disable loop invariant move (-fno-move-loop-invariants)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nomoveloopinvariants.519889803"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.821521074" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.none" valueType="enumerated"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.821521074" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.none" valueType="enumerated"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.1868926411" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" value="true" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.1868926411" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" value="true" valueType="boolean"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.1998882563" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" value="true" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.1998882563" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" value="true" valueType="boolean"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.28294102" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" value="true" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.28294102" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" value="true" valueType="boolean"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections.1579665519" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections" value="true" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections.1579665519" name="Data sections (-fdata-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections" value="true" valueType="boolean"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.1545950493" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.max" valueType="enumerated"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.1545950493" name="Debug level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.max" valueType="enumerated"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.1995605794" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.1995605794" name="Debug format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format"/>
|
||||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
|
||||||
<tool errorParsers="org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GCCErrorParser" id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.238834628" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.916452879">
|
<tool errorParsers="org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GCCErrorParser" id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.238834628" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.916452879">
|
||||||
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.963042472" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
|
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.963042472" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
|
||||||
|
@ -229,7 +229,7 @@
|
||||||
<sourceEntries>
|
<sourceEntries>
|
||||||
<entry excluding="Examples" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="DSP_Lib"/>
|
<entry excluding="Examples" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="DSP_Lib"/>
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
|
||||||
<entry excluding="src/stm32f7-hal/stm32f7xx_ll_usb.c|src/stm32f7-hal/stm32f7xx_ll_sdmmc.c|src/stm32f7-hal/stm32f7xx_ll_fmc.c|src/stm32f7-hal/stm32f7xx_hal_wwdg.c|src/stm32f7-hal/stm32f7xx_hal_sram.c|src/stm32f7-hal/stm32f7xx_hal_spdifrx.c|src/stm32f7-hal/stm32f7xx_hal_smartcard.c|src/stm32f7-hal/stm32f7xx_hal_sdram.c|src/stm32f7-hal/stm32f7xx_hal_sd.c|src/stm32f7-hal/stm32f7xx_hal_sai_ex.c|src/stm32f7-hal/stm32f7xx_hal_sai.c|src/stm32f7-hal/stm32f7xx_hal_rtc_ex.c|src/stm32f7-hal/stm32f7xx_hal_rtc.c|src/stm32f7-hal/stm32f7xx_hal_rng.c|src/stm32f7-hal/stm32f7xx_hal_qspi.c|src/stm32f7-hal/stm32f7xx_hal_pcd_ex.c|src/stm32f7-hal/stm32f7xx_hal_pcd.c|src/stm32f7-hal/stm32f7xx_hal_nor.c|src/stm32f7-hal/stm32f7xx_hal_nand.c|src/stm32f7-hal/stm32f7xx_hal_ltdc.c|src/stm32f7-hal/stm32f7xx_hal_lptim.c|src/stm32f7-hal/stm32f7xx_hal_irda.c|src/stm32f7-hal/stm32f7xx_hal_i2s.c|src/stm32f7-hal/stm32f7xx_hal_i2c_ex.c|src/stm32f7-hal/stm32f7xx_hal_hcd.c|src/stm32f7-hal/stm32f7xx_hal_hash_ex.c|src/stm32f7-hal/stm32f7xx_hal_hash.c|src/stm32f7-hal/stm32f7xx_hal_flash_ex.c|src/stm32f7-hal/stm32f7xx_hal_eth.c|src/stm32f7-hal/stm32f7xx_hal_dma_ex.c|src/stm32f7-hal/stm32f7xx_hal_dma2d.c|src/stm32f7-hal/stm32f7xx_hal_dma.c|src/stm32f7-hal/stm32f7xx_hal_dcmi_ex.c|src/stm32f7-hal/stm32f7xx_hal_dcmi.c|src/stm32f7-hal/stm32f7xx_hal_dac_ex.c|src/stm32f7-hal/stm32f7xx_hal_cryp_ex.c|src/stm32f7-hal/stm32f7xx_hal_cryp.c|src/stm32f7-hal/stm32f7xx_hal_crc.c|src/stm32f7-hal/stm32f7xx_hal_cec.c|src/stm32f7-hal/stm32f7xx_hal_can.c|src/stm32f7-hal/stm32f7xx_hal_adc_ex.c|src/stm32f7-hal/stm32f7xx_hal_msp_template.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="system"/>
|
<entry excluding="src/stm32f7-hal/stm32f7xx_ll_usb.c|src/stm32f7-hal/stm32f7xx_ll_sdmmc.c|src/stm32f7-hal/stm32f7xx_ll_fmc.c|src/stm32f7-hal/stm32f7xx_hal_wwdg.c|src/stm32f7-hal/stm32f7xx_hal_sram.c|src/stm32f7-hal/stm32f7xx_hal_spdifrx.c|src/stm32f7-hal/stm32f7xx_hal_smartcard.c|src/stm32f7-hal/stm32f7xx_hal_sdram.c|src/stm32f7-hal/stm32f7xx_hal_sd.c|src/stm32f7-hal/stm32f7xx_hal_sai_ex.c|src/stm32f7-hal/stm32f7xx_hal_sai.c|src/stm32f7-hal/stm32f7xx_hal_rtc_ex.c|src/stm32f7-hal/stm32f7xx_hal_rtc.c|src/stm32f7-hal/stm32f7xx_hal_rng.c|src/stm32f7-hal/stm32f7xx_hal_qspi.c|src/stm32f7-hal/stm32f7xx_hal_pcd_ex.c|src/stm32f7-hal/stm32f7xx_hal_pcd.c|src/stm32f7-hal/stm32f7xx_hal_nor.c|src/stm32f7-hal/stm32f7xx_hal_nand.c|src/stm32f7-hal/stm32f7xx_hal_ltdc.c|src/stm32f7-hal/stm32f7xx_hal_lptim.c|src/stm32f7-hal/stm32f7xx_hal_irda.c|src/stm32f7-hal/stm32f7xx_hal_i2s.c|src/stm32f7-hal/stm32f7xx_hal_i2c_ex.c|src/stm32f7-hal/stm32f7xx_hal_hcd.c|src/stm32f7-hal/stm32f7xx_hal_hash_ex.c|src/stm32f7-hal/stm32f7xx_hal_hash.c|src/stm32f7-hal/stm32f7xx_hal_flash_ex.c|src/stm32f7-hal/stm32f7xx_hal_eth.c|src/stm32f7-hal/stm32f7xx_hal_dma_ex.c|src/stm32f7-hal/stm32f7xx_hal_dma2d.c|src/stm32f7-hal/stm32f7xx_hal_dcmi_ex.c|src/stm32f7-hal/stm32f7xx_hal_dcmi.c|src/stm32f7-hal/stm32f7xx_hal_dac_ex.c|src/stm32f7-hal/stm32f7xx_hal_cryp_ex.c|src/stm32f7-hal/stm32f7xx_hal_cryp.c|src/stm32f7-hal/stm32f7xx_hal_crc.c|src/stm32f7-hal/stm32f7xx_hal_cec.c|src/stm32f7-hal/stm32f7xx_hal_can.c|src/stm32f7-hal/stm32f7xx_hal_adc_ex.c|src/stm32f7-hal/stm32f7xx_hal_msp_template.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="system"/>
|
||||||
</sourceEntries>
|
</sourceEntries>
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
|
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
|
||||||
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
|
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
|
||||||
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
||||||
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-1667007537446145964" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings Cross ARM" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="1402290119274807089" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings Cross ARM" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
||||||
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
||||||
<language-scope id="org.eclipse.cdt.core.g++"/>
|
<language-scope id="org.eclipse.cdt.core.g++"/>
|
||||||
</provider>
|
</provider>
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
|
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
|
||||||
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
|
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
|
||||||
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
||||||
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-1648056160672688194" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings Cross ARM" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="1421241496048264859" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings Cross ARM" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
||||||
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
||||||
<language-scope id="org.eclipse.cdt.core.g++"/>
|
<language-scope id="org.eclipse.cdt.core.g++"/>
|
||||||
</provider>
|
</provider>
|
||||||
|
|
10704
Source/Debug/PSDR.hex
10704
Source/Debug/PSDR.hex
File diff suppressed because it is too large
Load diff
|
@ -100,17 +100,23 @@ TIM_HandleTypeDef TimHandle4;
|
||||||
#define MASKWHITE 0b1111111111111111
|
#define MASKWHITE 0b1111111111111111
|
||||||
#define MASKBLACK 0b0000000000000000
|
#define MASKBLACK 0b0000000000000000
|
||||||
|
|
||||||
|
|
||||||
|
/* DMA */
|
||||||
|
|
||||||
|
static DMA_HandleTypeDef hdma_tx;
|
||||||
|
static DMA_HandleTypeDef hdma_rx;
|
||||||
|
|
||||||
/* Definition for SPIx's DMA */
|
/* Definition for SPIx's DMA */
|
||||||
#define SPIx_TX_DMA_CHANNEL DMA_CHANNEL_3
|
#define SPIx_TX_DMA_CHANNEL DMA_CHANNEL_3
|
||||||
#define SPIx_TX_DMA_STREAM DMA2_Stream5
|
#define SPIx_TX_DMA_STREAM DMA2_Stream3
|
||||||
#define SPIx_RX_DMA_CHANNEL DMA_CHANNEL_3
|
#define SPIx_RX_DMA_CHANNEL DMA_CHANNEL_3
|
||||||
#define SPIx_RX_DMA_STREAM DMA2_Stream2
|
#define SPIx_RX_DMA_STREAM DMA2_Stream2
|
||||||
|
|
||||||
/* Definition for SPIx's NVIC */
|
/* Definition for SPIx's NVIC */
|
||||||
#define SPIx_DMA_TX_IRQn DMA2_Stream3_IRQn
|
#define SPIx_DMA_TX_IRQn DMA2_Stream3_IRQn
|
||||||
#define SPIx_DMA_RX_IRQn DMA2_Stream0_IRQn
|
#define SPIx_DMA_RX_IRQn DMA2_Stream2_IRQn
|
||||||
#define SPIx_DMA_TX_IRQHandler DMA2_Stream3_IRQHandler
|
#define SPIx_DMA_TX_IRQHandler DMA2_Stream3_IRQHandler
|
||||||
#define SPIx_DMA_RX_IRQHandler DMA2_Stream0_IRQHandler
|
#define SPIx_DMA_RX_IRQHandler DMA2_Stream2_IRQHandler
|
||||||
|
|
||||||
SPI_HandleTypeDef SpiHandle;
|
SPI_HandleTypeDef SpiHandle;
|
||||||
UART_HandleTypeDef UartHandle;
|
UART_HandleTypeDef UartHandle;
|
||||||
|
|
|
@ -241,9 +241,11 @@ void Adafruit_GFX_fillRect(int16_t x, int16_t y, int16_t w, int16_t h,
|
||||||
uint16_t color) {
|
uint16_t color) {
|
||||||
// Update in subclasses if desired!
|
// Update in subclasses if desired!
|
||||||
int16_t i;
|
int16_t i;
|
||||||
for ( i=x; i<x+w; i++) {
|
// for ( i=x; i<x+w; i++) {
|
||||||
Adafruit_ILI9340_drawFastVLine(i, y, h, color);
|
// Adafruit_ILI9340_drawFastVLine(i, y, h, color);
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
Adafruit_ILI9340_fillRect(x, y, w, h, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Adafruit_GFX_fillScreen(uint16_t color) {
|
void Adafruit_GFX_fillScreen(uint16_t color) {
|
||||||
|
|
|
@ -65,6 +65,7 @@
|
||||||
// int _height = ILI9340_TFTHEIGHT; //320
|
// int _height = ILI9340_TFTHEIGHT; //320
|
||||||
uint16_t rxBuf[10];
|
uint16_t rxBuf[10];
|
||||||
uint16_t txBuf[2];
|
uint16_t txBuf[2];
|
||||||
|
uint8_t txBuf2[320 * 240 * 2];
|
||||||
|
|
||||||
// Constructor when using hardware SPI. Faster, but must use SPI pins
|
// Constructor when using hardware SPI. Faster, but must use SPI pins
|
||||||
// specific to each board type (e.g. 11,13 for Uno, 51,52 for Mega, etc.)
|
// specific to each board type (e.g. 11,13 for Uno, 51,52 for Mega, etc.)
|
||||||
|
@ -127,8 +128,8 @@ void Adafruit_ILI9340_writecommand(uint16_t c) {
|
||||||
txBuf[0] = c; // & 0xFF;
|
txBuf[0] = c; // & 0xFF;
|
||||||
//spi_readWrite(SpiHandle, rxBuf, txBuf, 1);
|
//spi_readWrite(SpiHandle, rxBuf, txBuf, 1);
|
||||||
HAL_SPI_Transmit(&SpiHandle, txBuf, 1 /*cnt * 2*/, 1);
|
HAL_SPI_Transmit(&SpiHandle, txBuf, 1 /*cnt * 2*/, 1);
|
||||||
|
//HAL_SPI_Transmit_DMA(&SpiHandle, txBuf, 1);
|
||||||
//HAL_SPI_TransmitReceive(&SpiHandle, (uint8_t*)txBuf, (uint8_t *)rxBuf, 1, 1000);
|
//while(SpiHandle.State == HAL_SPI_STATE_BUSY_TX);
|
||||||
|
|
||||||
//SET_BIT(csport, cspinmask);
|
//SET_BIT(csport, cspinmask);
|
||||||
HAL_GPIO_WritePin(LCD_NSS.port, LCD_NSS.pin, 1);
|
HAL_GPIO_WritePin(LCD_NSS.port, LCD_NSS.pin, 1);
|
||||||
|
@ -151,7 +152,8 @@ void Adafruit_ILI9340_writedata(uint16_t c) {
|
||||||
txBuf[0] = c; // & 0xFF;
|
txBuf[0] = c; // & 0xFF;
|
||||||
//spi_readWrite(SpiHandle, rxBuf, txBuf, 1);
|
//spi_readWrite(SpiHandle, rxBuf, txBuf, 1);
|
||||||
HAL_SPI_Transmit(&SpiHandle, txBuf, 1 /*cnt * 2*/, 1);
|
HAL_SPI_Transmit(&SpiHandle, txBuf, 1 /*cnt * 2*/, 1);
|
||||||
//HAL_SPI_TransmitReceive(&SpiHandle, (uint8_t*)txBuf, (uint8_t *)rxBuf, 1, 1000);
|
//HAL_SPI_Transmit_DMA(&SpiHandle, txBuf, 1);
|
||||||
|
//while(SpiHandle.State == HAL_SPI_STATE_BUSY_TX);
|
||||||
|
|
||||||
//digitalWrite(_cs, HIGH);
|
//digitalWrite(_cs, HIGH);
|
||||||
//SET_BIT(csport, cspinmask);
|
//SET_BIT(csport, cspinmask);
|
||||||
|
@ -561,18 +563,44 @@ void Adafruit_ILI9340_fillRect(int16_t x, int16_t y, int16_t w, int16_t h,
|
||||||
HAL_GPIO_WritePin(LCD_NSS.port, LCD_NSS.pin, 0);
|
HAL_GPIO_WritePin(LCD_NSS.port, LCD_NSS.pin, 0);
|
||||||
//digitalWrite(_cs, LOW);
|
//digitalWrite(_cs, LOW);
|
||||||
|
|
||||||
for(y=h; y>0; y--) {
|
//for(y=h; y>0; y--) {
|
||||||
for(x=w; x>0; x--) {
|
// for(x=w; x>0; x--) {
|
||||||
//spiwrite(hi);
|
//spiwrite(hi);
|
||||||
//spiwrite(lo);
|
//spiwrite(lo);
|
||||||
//txBuf[0] = hi;
|
//txBuf[0] = hi;
|
||||||
//txBuf[1] = lo;
|
//txBuf[1] = lo;
|
||||||
txBuf[0] = color;
|
uint32_t totalPixels = h * w;
|
||||||
|
//uint8_t txBuf2[totalPixels * 2];
|
||||||
|
|
||||||
spi_readWrite(SpiHandle, rxBuf, txBuf, 1);
|
for(uint32_t i = 0; i < totalPixels; i+=2)
|
||||||
//HAL_SPI_TransmitReceive(&SpiHandle, (uint8_t*)txBuf, (uint8_t*)rxBuf, 2, 1000);
|
{
|
||||||
}
|
//txBuf2[i] = color;
|
||||||
|
txBuf2[i] = color >> 8;
|
||||||
|
txBuf2[i + 1] = color & 0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//for()= color;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//spi_readWrite(SpiHandle, rxBuf, txBuf, 1);
|
||||||
|
//hdma_tx.Init.MemInc = DMA_MINC_DISABLE;
|
||||||
|
//HAL_DMA_Init(&hdma_tx);
|
||||||
|
|
||||||
|
|
||||||
|
HAL_SPI_Transmit_DMA(&SpiHandle, &txBuf2, 0xFFFF);
|
||||||
|
while(SpiHandle.State == HAL_SPI_STATE_BUSY_TX);
|
||||||
|
//HAL_SPI_Transmit_DMA(&SpiHandle, &txBuf2, 0xFFFF);
|
||||||
|
//while(SpiHandle.State == HAL_SPI_STATE_BUSY_TX);
|
||||||
|
//HAL_Delay(1000);
|
||||||
|
|
||||||
|
|
||||||
|
//hdma_tx.Init.MemInc = DMA_MINC_ENABLE;
|
||||||
|
//HAL_DMA_Init(&hdma_tx);
|
||||||
|
//}
|
||||||
|
//}
|
||||||
//digitalWrite(_cs, HIGH);
|
//digitalWrite(_cs, HIGH);
|
||||||
//SET_BIT(csport, cspinmask);
|
//SET_BIT(csport, cspinmask);
|
||||||
HAL_GPIO_WritePin(LCD_NSS.port, LCD_NSS.pin, 1);
|
HAL_GPIO_WritePin(LCD_NSS.port, LCD_NSS.pin, 1);
|
||||||
|
|
|
@ -306,62 +306,61 @@ void teardownPeripheralPower()
|
||||||
|
|
||||||
void configDMA(SPI_HandleTypeDef *hspi)
|
void configDMA(SPI_HandleTypeDef *hspi)
|
||||||
{
|
{
|
||||||
// static DMA_HandleTypeDef hdma_tx;
|
|
||||||
// static DMA_HandleTypeDef hdma_rx;
|
|
||||||
//
|
|
||||||
//
|
hdma_tx.Instance = SPIx_TX_DMA_STREAM;
|
||||||
// hdma_tx.Instance = SPIx_TX_DMA_STREAM;
|
|
||||||
//
|
hdma_tx.Init.Channel = SPIx_TX_DMA_CHANNEL;
|
||||||
// hdma_tx.Init.Channel = SPIx_TX_DMA_CHANNEL;
|
hdma_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
|
||||||
// hdma_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
|
hdma_tx.Init.PeriphInc = DMA_PINC_DISABLE;
|
||||||
// hdma_tx.Init.PeriphInc = DMA_PINC_DISABLE;
|
hdma_tx.Init.MemInc = DMA_MINC_ENABLE;
|
||||||
// hdma_tx.Init.MemInc = DMA_MINC_ENABLE;
|
hdma_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
|
||||||
// hdma_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
|
hdma_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
|
||||||
// hdma_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
|
hdma_tx.Init.Mode = DMA_NORMAL;
|
||||||
// hdma_tx.Init.Mode = DMA_NORMAL;
|
hdma_tx.Init.Priority = DMA_PRIORITY_LOW;
|
||||||
// hdma_tx.Init.Priority = DMA_PRIORITY_LOW;
|
hdma_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
|
||||||
// hdma_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
|
hdma_tx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
|
||||||
// hdma_tx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
|
hdma_tx.Init.MemBurst = DMA_MBURST_INC4;
|
||||||
// hdma_tx.Init.MemBurst = DMA_MBURST_INC4;
|
hdma_tx.Init.PeriphBurst = DMA_PBURST_INC4;
|
||||||
// hdma_tx.Init.PeriphBurst = DMA_PBURST_INC4;
|
|
||||||
//
|
HAL_DMA_Init(&hdma_tx);
|
||||||
// HAL_DMA_Init(&hdma_tx);
|
|
||||||
//
|
/* Associate the initialized DMA handle to the the SPI handle */
|
||||||
// /* Associate the initialized DMA handle to the the SPI handle */
|
__HAL_LINKDMA(hspi, hdmatx, hdma_tx);
|
||||||
// __HAL_LINKDMA(hspi, hdmatx, hdma_tx);
|
|
||||||
//
|
/* Configure the DMA handler for Transmission process */
|
||||||
// /* Configure the DMA handler for Transmission process */
|
hdma_rx.Instance = SPIx_RX_DMA_STREAM;
|
||||||
// hdma_rx.Instance = SPIx_RX_DMA_STREAM;
|
|
||||||
//
|
hdma_rx.Init.Channel = SPIx_RX_DMA_CHANNEL;
|
||||||
// hdma_rx.Init.Channel = SPIx_RX_DMA_CHANNEL;
|
hdma_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
|
||||||
// hdma_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
|
hdma_rx.Init.PeriphInc = DMA_PINC_DISABLE;
|
||||||
// hdma_rx.Init.PeriphInc = DMA_PINC_DISABLE;
|
hdma_rx.Init.MemInc = DMA_MINC_ENABLE;
|
||||||
// hdma_rx.Init.MemInc = DMA_MINC_ENABLE;
|
hdma_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
|
||||||
// hdma_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
|
hdma_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
|
||||||
// hdma_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
|
hdma_rx.Init.Mode = DMA_NORMAL;
|
||||||
// hdma_rx.Init.Mode = DMA_NORMAL;
|
hdma_rx.Init.Priority = DMA_PRIORITY_HIGH;
|
||||||
// hdma_rx.Init.Priority = DMA_PRIORITY_HIGH;
|
hdma_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
|
||||||
// hdma_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
|
hdma_rx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
|
||||||
// hdma_rx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
|
hdma_rx.Init.MemBurst = DMA_MBURST_INC4;
|
||||||
// hdma_rx.Init.MemBurst = DMA_MBURST_INC4;
|
hdma_rx.Init.PeriphBurst = DMA_PBURST_INC4;
|
||||||
// hdma_rx.Init.PeriphBurst = DMA_PBURST_INC4;
|
|
||||||
//
|
HAL_DMA_Init(&hdma_rx);
|
||||||
// HAL_DMA_Init(&hdma_rx);
|
|
||||||
//
|
/* Associate the initialized DMA handle to the the SPI handle */
|
||||||
// /* Associate the initialized DMA handle to the the SPI handle */
|
__HAL_LINKDMA(hspi, hdmarx, hdma_rx);
|
||||||
// __HAL_LINKDMA(hspi, hdmarx, hdma_rx);
|
|
||||||
//
|
/*##-4- Configure the NVIC for DMA #########################################*/
|
||||||
// /*##-4- Configure the NVIC for DMA #########################################*/
|
/* NVIC configuration for DMA transfer complete interrupt (SPI3_TX) */
|
||||||
// /* NVIC configuration for DMA transfer complete interrupt (SPI3_TX) */
|
HAL_NVIC_SetPriority(15/*SPIx_DMA_TX_IRQn*/, 0, 1);
|
||||||
// HAL_NVIC_SetPriority(15/*SPIx_DMA_TX_IRQn*/, 0, 1);
|
HAL_NVIC_EnableIRQ(SPIx_DMA_TX_IRQn);
|
||||||
// HAL_NVIC_EnableIRQ(SPIx_DMA_TX_IRQn);
|
|
||||||
//
|
/* NVIC configuration for DMA transfer complete interrupt (SPI3_RX) */
|
||||||
// /* NVIC configuration for DMA transfer complete interrupt (SPI3_RX) */
|
HAL_NVIC_SetPriority(SPIx_DMA_RX_IRQn, 0, 0);
|
||||||
// HAL_NVIC_SetPriority(SPIx_DMA_RX_IRQn, 0, 0);
|
HAL_NVIC_EnableIRQ(SPIx_DMA_RX_IRQn);
|
||||||
// HAL_NVIC_EnableIRQ(SPIx_DMA_RX_IRQn);
|
|
||||||
//
|
|
||||||
//
|
//HAL_DMA_Start();
|
||||||
// //HAL_DMA_Start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -987,7 +986,7 @@ main(int argc, char* argv[])
|
||||||
hal_setupPins();
|
hal_setupPins();
|
||||||
spi_init();
|
spi_init();
|
||||||
|
|
||||||
// configDMA(&SpiHandle );
|
configDMA(&SpiHandle );
|
||||||
|
|
||||||
|
|
||||||
//I2C_HandleTypeDef hi2c;
|
//I2C_HandleTypeDef hi2c;
|
||||||
|
@ -1065,8 +1064,18 @@ setFreq(vfoAFrequency);
|
||||||
Adafruit_ILI9340_begin();
|
Adafruit_ILI9340_begin();
|
||||||
Adafruit_ILI9340_setRotation(1);
|
Adafruit_ILI9340_setRotation(1);
|
||||||
//Adafruit_GFX_fillScreen(ILI9340_BLACK);
|
//Adafruit_GFX_fillScreen(ILI9340_BLACK);
|
||||||
|
|
||||||
|
drawNumber('3', 0,0, 0xFFFF);
|
||||||
Adafruit_GFX_fillScreen(ILI9340_BLACK);
|
Adafruit_GFX_fillScreen(ILI9340_BLACK);
|
||||||
|
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
// drawNumber('3', 0,0, 0xFFFF);
|
||||||
|
Adafruit_GFX_fillScreen(ILI9340_BLUE);
|
||||||
|
// drawNumber('3', 5,5, 0xFFFF);
|
||||||
|
Adafruit_GFX_fillScreen(ILI9340_RED);
|
||||||
|
}
|
||||||
|
|
||||||
Adafruit_GFX_setTextSize(3);
|
Adafruit_GFX_setTextSize(3);
|
||||||
Adafruit_GFX_setTextWrap(1);
|
Adafruit_GFX_setTextWrap(1);
|
||||||
Adafruit_GFX_setTextColor(ILI9340_WHITE, ILI9340_BLACK);
|
Adafruit_GFX_setTextColor(ILI9340_WHITE, ILI9340_BLACK);
|
||||||
|
@ -2027,6 +2036,20 @@ HAL_NVIC_EnableIRQ(TIM4_IRQn);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DMA2_Stream2_IRQHandler(void)
|
||||||
|
{
|
||||||
|
//doNothing();
|
||||||
|
HAL_DMA_IRQHandler(&hdma_rx);
|
||||||
|
//HAL_GPIO_WritePin(LCD_NSS.port, LCD_NSS.pin, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DMA2_Stream3_IRQHandler(void)
|
||||||
|
{
|
||||||
|
//doNothing();
|
||||||
|
HAL_DMA_IRQHandler(&hdma_tx);
|
||||||
|
//HAL_GPIO_WritePin(LCD_NSS.port, LCD_NSS.pin, 1);
|
||||||
|
}
|
||||||
|
|
||||||
void TIM3_IRQHandler(void)
|
void TIM3_IRQHandler(void)
|
||||||
{
|
{
|
||||||
HAL_TIM_IRQHandler(&TimHandle);
|
HAL_TIM_IRQHandler(&TimHandle);
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include <stm32f7xx_hal_spi.h>
|
#include <stm32f7xx_hal_spi.h>
|
||||||
#include <stm32f7xx_hal_gpio.h>
|
#include <stm32f7xx_hal_gpio.h>
|
||||||
#include <stm32f7xx_hal.h>
|
#include <stm32f7xx_hal.h>
|
||||||
|
#include <stm32f7xx_hal_rcc.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void spi_init(void)
|
void spi_init(void)
|
||||||
|
@ -25,7 +26,7 @@ void spi_init(void)
|
||||||
//SPI_InitTypeDef spiInitStructure;
|
//SPI_InitTypeDef spiInitStructure;
|
||||||
GPIO_InitTypeDef gpioInitStructure;
|
GPIO_InitTypeDef gpioInitStructure;
|
||||||
|
|
||||||
HAL_SPI_MspInit(&SpiHandle);
|
|
||||||
|
|
||||||
__SPI1_CLK_ENABLE();
|
__SPI1_CLK_ENABLE();
|
||||||
|
|
||||||
|
@ -70,6 +71,27 @@ void spi_init(void)
|
||||||
// HAL_GPIO_Init(LCD_NSS.port, &gpioInitStructure);
|
// HAL_GPIO_Init(LCD_NSS.port, &gpioInitStructure);
|
||||||
// //HAL_GPIO_WritePin(LCD_NSS.port, LCD_NSS.pin, 1); // TBD - should this be before init?
|
// //HAL_GPIO_WritePin(LCD_NSS.port, LCD_NSS.pin, 1); // TBD - should this be before init?
|
||||||
|
|
||||||
|
//Configure NVIC if needed.
|
||||||
|
|
||||||
|
//Configure DMA
|
||||||
|
|
||||||
|
// DMA_HandleTypeDef DmaHandle;
|
||||||
|
// DMA_InitTypeDef dmaInitStructure;
|
||||||
|
//
|
||||||
|
// HAL_DMA_DeInit(DMA2_Stream3);
|
||||||
|
//
|
||||||
|
// dmaInitStructure.Channel = DMA_CHANNEL_3;
|
||||||
|
// dmaInitStructure.Direction =
|
||||||
|
|
||||||
|
//Already enabled in the peripheral power function.....
|
||||||
|
//__DMA1_CLK_ENABLE;
|
||||||
|
//__DMA2_CLK_ENABLE; //
|
||||||
|
//__HAL_RCC_DMA1_CLK_ENABLE;
|
||||||
|
//__HAL_RCC_DMA2_CLK_ENABLE;
|
||||||
|
|
||||||
|
//DmaHandle.Init.
|
||||||
|
|
||||||
|
//HAL_SPI_MspInit(&SpiHandle);
|
||||||
|
|
||||||
SpiHandle.Instance = SPI1;
|
SpiHandle.Instance = SPI1;
|
||||||
SpiHandle.Init.Direction = SPI_DIRECTION_2LINES;
|
SpiHandle.Init.Direction = SPI_DIRECTION_2LINES;
|
||||||
|
@ -78,12 +100,14 @@ void spi_init(void)
|
||||||
SpiHandle.Init.CLKPolarity = SPI_POLARITY_HIGH;
|
SpiHandle.Init.CLKPolarity = SPI_POLARITY_HIGH;
|
||||||
SpiHandle.Init.CLKPhase = SPI_PHASE_2EDGE;
|
SpiHandle.Init.CLKPhase = SPI_PHASE_2EDGE;
|
||||||
SpiHandle.Init.NSS = SPI_NSS_SOFT; //SPI_NSS_SOFT;
|
SpiHandle.Init.NSS = SPI_NSS_SOFT; //SPI_NSS_SOFT;
|
||||||
SpiHandle.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
|
SpiHandle.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; //SPI_BAUDRATEPRESCALER_2;
|
||||||
SpiHandle.Init.FirstBit = SPI_FIRSTBIT_MSB;
|
SpiHandle.Init.FirstBit = SPI_FIRSTBIT_MSB;
|
||||||
SpiHandle.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED;
|
SpiHandle.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED;
|
||||||
SpiHandle.Init.TIMode = SPI_TIMODE_DISABLED;
|
SpiHandle.Init.TIMode = SPI_TIMODE_DISABLED;
|
||||||
SpiHandle.Init.CRCPolynomial = 7;
|
SpiHandle.Init.CRCPolynomial = 7;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(HAL_SPI_Init(&SpiHandle) != HAL_OK)
|
if(HAL_SPI_Init(&SpiHandle) != HAL_OK)
|
||||||
{
|
{
|
||||||
/* Initialization Error */
|
/* Initialization Error */
|
||||||
|
@ -124,9 +148,9 @@ void spi_readWrite(SPI_HandleTypeDef SpiH, uint16_t* rxBuf, uint16_t* txBuf, uin
|
||||||
txTmp[1] = txBuf[0] & 0xFF;
|
txTmp[1] = txBuf[0] & 0xFF;
|
||||||
|
|
||||||
//HAL_SPI_TransmitReceive(&SpiHandle, txBuf, rxBuf, cnt, 1000);
|
//HAL_SPI_TransmitReceive(&SpiHandle, txBuf, rxBuf, cnt, 1000);
|
||||||
HAL_SPI_Transmit(&SpiHandle, txTmp, 2 /*cnt * 2*/, 1);
|
//HAL_SPI_Transmit(&SpiHandle, txTmp, 2 /*cnt * 2*/, 1);
|
||||||
//while(HAL_SPI_GetState(&SpiH) != HAL_SPI_STATE_READY);
|
//while(HAL_SPI_GetState(&SpiH) != HAL_SPI_STATE_READY);
|
||||||
//HAL_SPI_Transmit_DMA(&SpiH, txBuf, cnt);
|
HAL_SPI_Transmit_DMA(&SpiHandle, txTmp, cnt);
|
||||||
//while(HAL_SPI_GetState(&SpiH) != HAL_SPI_STATE_READY);
|
//while(HAL_SPI_GetState(&SpiH) != HAL_SPI_STATE_READY);
|
||||||
|
|
||||||
// //High, second edge
|
// //High, second edge
|
||||||
|
|
Loading…
Reference in a new issue