2 커밋 c8542c8fa7 ... 1dceb7746c

작성자 SHA1 메시지 날짜
  TelenkovDmitry 1dceb7746c merge 6 일 전
  TelenkovDmitry fe32849275 Промежуточный коммит. Подключаю SPI. 6 일 전

+ 5 - 0
desk/modules/configs/config.h

@@ -57,5 +57,10 @@
 // Коэффициент 2, нижний порог
 #define FACTOR_2_DOWN_THR   1950
 
+// Интерфейс экрана
+//#define I2C_BRIDGE
+
+// Интерфейс экрана
+#define SPI_BRIDGE
 
 #endif /* #ifndef __CONFIG_H */

+ 16 - 3
desk/modules/ssd_1327/oled_common.cpp

@@ -1,6 +1,8 @@
 #include "stm32g4xx_hal.h"
 #include "oled_common.h"
+#include "config.h"
 #include "i2c_bridge.h"
+#include "spi_bridge.h"
 #include "logo_grayscale.h"
 #include "fonts.h"
 #include "SSD1327.h"
@@ -10,8 +12,12 @@ extern "C" {
 #include "GFX_SSD1327.h"
 }
   
-
+#ifdef I2C_BRIDGE
 I2C_HandleTypeDef *i2c_bridge;
+#eldif SPI_BRIDGE
+SPI_HandleTypeDef *spi_bridge;
+//DMA_HandleTypeDef hdma_spi_bridge;
+#endif
 
 
 //
@@ -19,12 +25,19 @@ void init_oled(void)
 {
     init_gpio_oled();
     
+#ifdef I2C_BRIDGE
     i2c_bridge_init();
-      
     i2c_bridge = i2c_get_bridge();
-      
     SSD1327_I2cInit(i2c_bridge);
     
+#eldif SPI_BRIDGE
+    spi_bridge_init();
+
+#endif
+    
+    return;
+    
+    
     SSD1327_Clear(BLACK);
     
 #if 0    

+ 90 - 0
desk/modules/ssd_1327/spi_bridge.cpp

@@ -0,0 +1,90 @@
+#include "spi_bridge.h"
+
+
+SPI_HandleTypeDef hspi2;
+
+//
+void spi_bridge_init(void)
+{
+
+}
+
+
+//
+#if 0
+I2C_HandleTypeDef *i2c_get_bridge(void)
+{
+    return &hi2c2;
+}
+#endif
+
+void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
+{
+  GPIO_InitTypeDef GPIO_InitStruct = {0};
+  
+  if(hspi->Instance==SPI2)
+  {
+    __HAL_RCC_SPI2_CLK_ENABLE();
+
+    __HAL_RCC_GPIOA_CLK_ENABLE();
+    __HAL_RCC_GPIOA_CLK_ENABLE();
+    /**SPI1 GPIO Configuration
+    PA4     ------> SPI1_NSS
+    PA5     ------> SPI1_SCK
+    PA7     ------> SPI1_MOSI
+    */
+    GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_7;
+    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
+    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+  }
+#if 0    
+    /* SPI1 DMA Init */
+    /* SPI1_TX Init */
+    hdma_spi1_tx.Instance = DMA1_Channel3;
+    hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
+    hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
+    hdma_spi1_tx.Init.MemInc = DMA_MINC_ENABLE;
+    hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+    hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+    hdma_spi1_tx.Init.Mode = DMA_NORMAL;
+    hdma_spi1_tx.Init.Priority = DMA_PRIORITY_LOW;
+    if (HAL_DMA_Init(&hdma_spi1_tx) != HAL_OK)
+    {
+      Error_Handler();
+    }
+
+    __HAL_LINKDMA(hspi,hdmatx,hdma_spi1_tx);
+
+    /* SPI1 interrupt Init */
+    HAL_NVIC_SetPriority(SPI1_IRQn, 5, 0);
+    HAL_NVIC_EnableIRQ(SPI1_IRQn);
+  /* USER CODE BEGIN SPI1_MspInit 1 */
+
+  /* USER CODE END SPI1_MspInit 1 */
+  }
+  else if(hspi->Instance==SPI2)
+  {
+  /* USER CODE BEGIN SPI2_MspInit 0 */
+
+  /* USER CODE END SPI2_MspInit 0 */
+    /* Peripheral clock enable */
+    __HAL_RCC_SPI2_CLK_ENABLE();
+
+    __HAL_RCC_GPIOB_CLK_ENABLE();
+    /**SPI2 GPIO Configuration
+    PB13     ------> SPI2_SCK
+    PB14     ------> SPI2_MISO
+    PB15     ------> SPI2_MOSI
+    */
+    GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_15;
+    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
+    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+    GPIO_InitStruct.Pin = GPIO_PIN_14;
+    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
+    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+#endif    
+}

+ 14 - 0
desk/modules/ssd_1327/spi_bridge.h

@@ -0,0 +1,14 @@
+#ifndef __SPI_BRIDGE_H
+#define __SPI_BRIDGE_H
+
+#include "stm32g4xx_hal.h"
+
+
+//
+void spi_bridge_init(void);
+
+//
+//I2C_HandleTypeDef* i2c_get_bridge(void);
+
+
+#endif // __SPI_BRIDGE_H

+ 1 - 1
desk/user/stm32g4xx_hal_conf.h

@@ -60,7 +60,7 @@
 /*#define HAL_SAI_MODULE_ENABLED   */
 /*#define HAL_SMARTCARD_MODULE_ENABLED   */
 /*#define HAL_SMBUS_MODULE_ENABLED   */
-/*#define HAL_SPI_MODULE_ENABLED   */
+#define HAL_SPI_MODULE_ENABLED   
 /*#define HAL_SRAM_MODULE_ENABLED   */
 #define HAL_TIM_MODULE_ENABLED   
 #define HAL_UART_MODULE_ENABLED

BIN
output/desk.bin


+ 3 - 0
project/ewarm/desk/desk.ewp

@@ -2537,6 +2537,9 @@
             <file>
                 <name>$PROJ_DIR$\..\..\..\desk\modules\ssd_1327\oled_common.cpp</name>
             </file>
+            <file>
+                <name>$PROJ_DIR$\..\..\..\desk\modules\ssd_1327\spi_bridge.cpp</name>
+            </file>
         </group>
         <group>
             <name>terminal</name>

+ 3 - 0
project/ewarm/desk/desk.ewt

@@ -3236,6 +3236,9 @@
             <file>
                 <name>$PROJ_DIR$\..\..\..\desk\modules\ssd_1327\oled_common.cpp</name>
             </file>
+            <file>
+                <name>$PROJ_DIR$\..\..\..\desk\modules\ssd_1327\spi_bridge.cpp</name>
+            </file>
         </group>
         <group>
             <name>terminal</name>