|
@@ -85,7 +85,8 @@ static void MX_TIM16_Init(void);
|
|
|
static void MX_TIM17_Init(void);
|
|
|
/* USER CODE BEGIN PFP */
|
|
|
static void showDigit(tube_pos_t pos, uint8_t dig);
|
|
|
-static void SPI_Send(void);
|
|
|
+static void SPI_StartTX(void);
|
|
|
+//static void SPI_Send(void);
|
|
|
/* USER CODE END PFP */
|
|
|
|
|
|
/* Private user code ---------------------------------------------------------*/
|
|
@@ -156,36 +157,31 @@ int main(void)
|
|
|
/* Enable tube power */
|
|
|
TUBE_PWR_ON;
|
|
|
|
|
|
- // manual dma start sample
|
|
|
+ /* Set DMA source and destination addresses. */
|
|
|
+ /* Source: Address of the framebuffer. */
|
|
|
+ DMA1_Channel1->CMAR = (uint32_t)&tubesBuffer;
|
|
|
+ /* Destination: SPI1 data register. */
|
|
|
+ DMA1_Channel1->CPAR = (uint32_t)&( SPI1->DR );
|
|
|
+ /* Set DMA data transfer length (framebuffer length). */
|
|
|
+ DMA1_Channel1->CNDTR = SPI_BUFFER_SIZE;
|
|
|
+
|
|
|
+#ifdef USE_LL_DRV
|
|
|
/* Set DMA transfer addresses of source and destination */
|
|
|
//LL_DMA_ConfigAddresses(DMA1,
|
|
|
// LL_DMA_CHANNEL_1,
|
|
|
- // (uint32_t)&nixieTubes,
|
|
|
+ // (uint32_t)&tubesBuffer,
|
|
|
// (uint32_t)&(SPI1->DR),
|
|
|
// LL_DMA_DIRECTION_MEMORY_TO_PERIPH);
|
|
|
-
|
|
|
/* Set DMA transfer size */
|
|
|
//LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_1, SPI_BUFFER_SIZE);
|
|
|
+#endif // USE_LL_DRV
|
|
|
|
|
|
- /* Enable DMA transfer complete/error interrupts */
|
|
|
- //LL_DMA_EnableIT_TC(DMA1, LL_DMA_CHANNEL_1);
|
|
|
- //LL_DMA_EnableIT_TE(DMA1, LL_DMA_CHANNEL_1);
|
|
|
+ showDigit(Tube_A, 0xf);
|
|
|
+ showDigit(Tube_B, 0xf);
|
|
|
+ showDigit(Tube_D, 0xf);
|
|
|
+ showDigit(Tube_E, 0xf);
|
|
|
|
|
|
- showDigit(Tube_A, 0);
|
|
|
- showDigit(Tube_B, 0);
|
|
|
- showDigit(Tube_D, 0);
|
|
|
- showDigit(Tube_E, 4);
|
|
|
-
|
|
|
- /* Start the DMA transfer from Memory to SPI1 */
|
|
|
- //LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_1);
|
|
|
- /* Enable SPI Interrupts */
|
|
|
- //LL_SPI_EnableIT_ERR(SPI1);
|
|
|
- //LL_SPI_EnableIT_TXE(SPI1);
|
|
|
- //LL_SPI_EnableIT_RXNE(SPI1);
|
|
|
- //LL_SPI_EnableDMAReq_TX(SPI1);
|
|
|
- /* Start SPI transfer */
|
|
|
- //LATCH_DOWN;
|
|
|
- //LL_SPI_Enable(SPI1);
|
|
|
+ SPI_StartTX();
|
|
|
|
|
|
// COLOR_R(0);
|
|
|
// COLOR_G(0);
|
|
@@ -199,12 +195,18 @@ int main(void)
|
|
|
{
|
|
|
IN15_Plus;
|
|
|
COLOR_RGB(0, 0, 0);
|
|
|
- SPI_Send();
|
|
|
+// SPI_Send();
|
|
|
LL_mDelay(500);
|
|
|
|
|
|
+ showDigit(Tube_A, 1);
|
|
|
+ showDigit(Tube_B, 2);
|
|
|
+ showDigit(Tube_D, 3);
|
|
|
+ showDigit(Tube_E, 4);
|
|
|
+ SPI_StartTX();
|
|
|
+
|
|
|
IN15_OFF;
|
|
|
COLOR_RGB(0xFF, 0x12, 0x0); // FF7E00 or FFBF00
|
|
|
- SPI_Send();
|
|
|
+// SPI_Send();
|
|
|
LL_mDelay(500);
|
|
|
/* USER CODE END WHILE */
|
|
|
|
|
@@ -214,12 +216,26 @@ int main(void)
|
|
|
//LL_SPI_Enable(SPI1);
|
|
|
//LL_mDelay(1);
|
|
|
|
|
|
+ showDigit(Tube_A, 5);
|
|
|
+ showDigit(Tube_B, 6);
|
|
|
+ showDigit(Tube_D, 7);
|
|
|
+ showDigit(Tube_E, 8);
|
|
|
+ SPI_StartTX();
|
|
|
+
|
|
|
//__WFI();
|
|
|
}
|
|
|
/* USER CODE END 3 */
|
|
|
}
|
|
|
|
|
|
|
|
|
+static void SPI_StartTX(void) {
|
|
|
+ LATCH_DOWN;
|
|
|
+
|
|
|
+ /* Start SPI transfer */
|
|
|
+ SPI1->CR2 |= SPI_CR2_TXDMAEN;
|
|
|
+ SPI1->CR1 |= SPI_CR1_SPE;
|
|
|
+}
|
|
|
+
|
|
|
static void SPI_Send(void) {
|
|
|
int i;
|
|
|
|
|
@@ -477,6 +493,13 @@ static void MX_SPI1_Init(void)
|
|
|
|
|
|
/* USER CODE BEGIN SPI1_Init 1 */
|
|
|
|
|
|
+ /* Enable DMA transfer complete/error interrupts */
|
|
|
+ LL_DMA_EnableIT_TC(DMA1, LL_DMA_CHANNEL_1);
|
|
|
+ LL_DMA_EnableIT_TE(DMA1, LL_DMA_CHANNEL_1);
|
|
|
+
|
|
|
+ /* Start the DMA transfer from Memory to SPI1 */
|
|
|
+ LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_1);
|
|
|
+
|
|
|
/* USER CODE END SPI1_Init 1 */
|
|
|
/* SPI1 parameter configuration*/
|
|
|
SPI_InitStruct.TransferDirection = LL_SPI_FULL_DUPLEX;
|