|
@@ -86,7 +86,6 @@ static void MX_TIM17_Init(void);
|
|
|
/* USER CODE BEGIN PFP */
|
|
|
static void showDigit(tube_pos_t pos, uint8_t dig);
|
|
|
static void SPI_StartTX(void);
|
|
|
-//static void SPI_Send(void);
|
|
|
/* USER CODE END PFP */
|
|
|
|
|
|
/* Private user code ---------------------------------------------------------*/
|
|
@@ -141,6 +140,7 @@ int main(void)
|
|
|
MX_TIM16_Init();
|
|
|
MX_TIM17_Init();
|
|
|
/* USER CODE BEGIN 2 */
|
|
|
+ __enable_irq();
|
|
|
//LL_Init1msTick(rcc_clocks.HCLK_Frequency);
|
|
|
//LL_mDelay(1);
|
|
|
|
|
@@ -167,25 +167,20 @@ int main(void)
|
|
|
|
|
|
#ifdef USE_LL_DRV
|
|
|
/* Set DMA transfer addresses of source and destination */
|
|
|
- //LL_DMA_ConfigAddresses(DMA1,
|
|
|
- // LL_DMA_CHANNEL_1,
|
|
|
- // (uint32_t)&tubesBuffer,
|
|
|
- // (uint32_t)&(SPI1->DR),
|
|
|
- // LL_DMA_DIRECTION_MEMORY_TO_PERIPH);
|
|
|
+ LL_DMA_ConfigAddresses(DMA1,
|
|
|
+ LL_DMA_CHANNEL_1,
|
|
|
+ (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);
|
|
|
+ LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_1, SPI_BUFFER_SIZE);
|
|
|
#endif // USE_LL_DRV
|
|
|
|
|
|
- showDigit(Tube_A, 0xf);
|
|
|
- showDigit(Tube_B, 0xf);
|
|
|
- showDigit(Tube_D, 0xf);
|
|
|
- showDigit(Tube_E, 0xf);
|
|
|
+ /* Start SPI transfer */
|
|
|
+ SPI1->CR2 |= SPI_CR2_TXDMAEN;
|
|
|
+ SPI1->CR1 |= SPI_CR1_SPE;
|
|
|
|
|
|
- SPI_StartTX();
|
|
|
|
|
|
-// COLOR_R(0);
|
|
|
-// COLOR_G(0);
|
|
|
-// COLOR_B(0);
|
|
|
IN15_OFF;
|
|
|
/* USER CODE END 2 */
|
|
|
|
|
@@ -195,7 +190,6 @@ int main(void)
|
|
|
{
|
|
|
IN15_Plus;
|
|
|
COLOR_RGB(0, 0, 0);
|
|
|
-// SPI_Send();
|
|
|
LL_mDelay(500);
|
|
|
|
|
|
showDigit(Tube_A, 1);
|
|
@@ -206,16 +200,10 @@ int main(void)
|
|
|
|
|
|
IN15_OFF;
|
|
|
COLOR_RGB(0xFF, 0x12, 0x0); // FF7E00 or FFBF00
|
|
|
-// SPI_Send();
|
|
|
LL_mDelay(500);
|
|
|
/* USER CODE END WHILE */
|
|
|
|
|
|
/* USER CODE BEGIN 3 */
|
|
|
- //LATCH_DOWN;
|
|
|
- //LL_SPI_EnableIT_TXE(SPI1);
|
|
|
- //LL_SPI_Enable(SPI1);
|
|
|
- //LL_mDelay(1);
|
|
|
-
|
|
|
showDigit(Tube_A, 5);
|
|
|
showDigit(Tube_B, 6);
|
|
|
showDigit(Tube_D, 7);
|
|
@@ -229,66 +217,10 @@ int main(void)
|
|
|
|
|
|
|
|
|
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;
|
|
|
-
|
|
|
- SPI1->CR1 |= SPI_CR1_SPE;
|
|
|
- LATCH_DOWN;
|
|
|
-
|
|
|
- for (i=0; i<SPI_BUFFER_SIZE; i++) {
|
|
|
- // Wait for TXE 'transmit buffer empty' bit to be set.
|
|
|
- while ( !( SPI1->SR & SPI_SR_TXE ) ); // == 0
|
|
|
- // Send the byte.
|
|
|
- *( uint8_t* )&(SPI1->DR) = tubesBuffer[i];
|
|
|
- }
|
|
|
-
|
|
|
- while ((SPI1->SR & SPI_SR_FTLVL) != 0);
|
|
|
- while ((SPI1->SR & SPI_SR_BSY) != 0);
|
|
|
- SPI1->CR1 &= ~SPI_CR1_SPE;
|
|
|
- LATCH_UP;
|
|
|
+ LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_1);
|
|
|
}
|
|
|
|
|
|
|
|
|
-/**
|
|
|
- * @brief Function called from SPI1 IRQ Handler when TXE flag is set
|
|
|
- * Function is in charge to transmit byte on SPI lines.
|
|
|
- * @param None
|
|
|
- * @retval None
|
|
|
- */
|
|
|
-void SPI1_Tx_Callback(void)
|
|
|
-{
|
|
|
- static int idx=0;
|
|
|
- /* Write character in Data register.
|
|
|
- TXE flag is cleared by reading data in DR register */
|
|
|
- //LL_SPI_TransmitData8(SPI1, tubesBuffer[idx]);
|
|
|
-#if defined (__GNUC__)
|
|
|
- __IO uint8_t *spidr = ((__IO uint8_t *)&SPI1->DR);
|
|
|
- *spidr = tubesBuffer[idx];
|
|
|
-#else
|
|
|
- *((__IO uint8_t *)&SPI1->DR) = TxData;
|
|
|
-#endif /* __GNUC__ */
|
|
|
-
|
|
|
- idx ++;
|
|
|
-
|
|
|
- if (idx >= SPI_BUFFER_SIZE) {
|
|
|
- /* Disable TXE Interrupt */
|
|
|
- LL_SPI_DisableIT_TXE(SPI1);
|
|
|
- idx = 0;
|
|
|
- while ((SPI1->SR & SPI_SR_FTLVL) != 0);
|
|
|
- while ((SPI1->SR & SPI_SR_BSY) != 0);
|
|
|
- LL_SPI_Disable(SPI1);
|
|
|
- LATCH_UP;
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* @brief System Clock Configuration
|
|
|
* @retval None
|
|
@@ -497,9 +429,6 @@ static void MX_SPI1_Init(void)
|
|
|
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;
|