Changeset - a48d9ffdc5db
[Not reviewed]
default
0 2 0
Ethan Zonca - 10 years ago 2014-07-03 13:04:24
ezonca@sealandaire.com
Oled driver updates and pin assignment fixes
2 files changed with 36 insertions and 54 deletions:
0 comments (0 inline, 0 general)
libraries/oleddrv/bsp.h
Show inline comments
 
@@ -25,69 +25,44 @@ D1/Data 3  4  D0/Clk
 
  RD        (Float)
 
 */
 
 
#define   SSD_Clk         GPIOB,GPIO_Pin_13
 
#define   SSD_Data        GPIOB,GPIO_Pin_15
 
#define   SSD_Reset       GPIOD,GPIO_Pin_12
 
#define   SSD_A0          GPIOD,GPIO_Pin_14
 
#define   SSD_CS          //GPIOG,GPIO_Pin_2
 
#define   SSD_Clk         GPIOA,GPIO_Pin_5
 
#define   SSD_Data        GPIOA,GPIO_Pin_7
 
#define   SSD_Reset       GPIOB,GPIO_Pin_2
 
#define   SSD_A0          GPIOB,GPIO_Pin_10
 
#define   SSD_CS          GPIOB,GPIO_Pin_1
 
 
#define   SSD_Clk_Low()     GPIOB->BRR = GPIO_Pin_13
 
#define   SSD_Clk_High()    GPIOB->BSRR = GPIO_Pin_13
 
#define   SSD_Data_Low()    GPIOB->BRR = GPIO_Pin_15
 
#define   SSD_Data_High()   GPIOB->BSRR = GPIO_Pin_15
 
#define   SSD_Reset_Low()   GPIOB->BRR = GPIO_Pin_12
 
#define   SSD_Reset_High()  GPIOB->BSRR = GPIO_Pin_12
 
#define   SSD_A0_Low()      GPIOB->BRR = GPIO_Pin_14
 
#define   SSD_A0_High()     GPIOB->BSRR = GPIO_Pin_14
 
#define   SSD_CS_Low()      //GPIOG->BRR = GPIO_Pin_2
 
#define   SSD_CS_High()     //GPIOG->BSRR = GPIO_Pin_2
 
#define   SSD_Clk_Low()     GPIOA->BRR = GPIO_Pin_5
 
#define   SSD_Clk_High()    GPIOA->ODR |= GPIO_Pin_5
 
#define   SSD_Data_Low()    GPIOA->BRR = GPIO_Pin_7
 
#define   SSD_Data_High()   GPIOA->ODR |= GPIO_Pin_7
 
#define   SSD_Reset_Low()   GPIOB->BRR = GPIO_Pin_2
 
#define   SSD_Reset_High()  GPIOB->ODR |= GPIO_Pin_2
 
#define   SSD_A0_Low()      GPIOB->BRR = GPIO_Pin_10
 
#define   SSD_A0_High()     GPIOB->ODR |= GPIO_Pin_10
 
#define   SSD_CS_Low()      GPIOB->BRR = GPIO_Pin_1
 
#define   SSD_CS_High()     GPIOB->ODR |= GPIO_Pin_1
 
 
#define   SPI_SendByte(data)  SPI2->DR = (data)
 
#define   SPI_Wait()           while(!(SPI2->SR&SPI_I2S_FLAG_TXE));while(SPI2->SR&SPI_I2S_FLAG_BSY);
 
#define   SPI_SendByte(data)  SPI1->DR = (data)
 
#define   SPI_Wait()           while(!(SPI1->SR&SPI_I2S_FLAG_TXE));while(SPI1->SR&SPI_I2S_FLAG_BSY);
 
 
#define   SSD1303_FPS                   50
 
 
 
 
#define   IsLedOn()       (!(GPIOA->ODR & GPIO_Pin_8))
 
#define   LED_ON()        GPIOA->BRR = GPIO_Pin_8
 
#define   LED_OFF()       GPIOA->BSRR = GPIO_Pin_8
 
#define   ToggleLED()     if(GPIOA->ODR & GPIO_Pin_8){GPIOA->BRR = GPIO_Pin_8;}\
 
                          else{GPIOA->BSRR = GPIO_Pin_8;}
 
 
#define   IsCHG()         (!(GPIOB->IDR & GPIO_Pin_5))
 
#define   IsPGOOD()       (!(GPIOB->IDR & GPIO_Pin_4))
 
 
#define   GSel1_High()    GPIOB->BSRR = GPIO_Pin_9
 
#define   GSel1_Low()     GPIOB->BRR = GPIO_Pin_9
 
#define   GSel2_High()    GPIOB->BSRR = GPIO_Pin_8
 
#define   GSel2_Low()     GPIOB->BRR = GPIO_Pin_8
 
 
#define   MMA_SLEEP()     GPIOB->BRR = GPIO_Pin_11
 
#define   MMA_WAKEUP()    GPIOB->BSRR = GPIO_Pin_11
 
#define   Is_MMA_WAKEUP() (GPIOB->ODR & GPIO_Pin_11)
 
 
#define   AD_CH_BAT       ADC_Channel_4
 
#define   AD_CH_X         ADC_Channel_1
 
#define   AD_CH_Y         ADC_Channel_2
 
#define   AD_CH_Z         ADC_Channel_3
 
#define   AD_CH_CHG       ADC_Channel_9
 
#define   AD_CH_REF       ADC_Channel_17
 
 
#define   DMA_SSD_1303    DMA1_Channel5
 
#define   DMA_Handler_SSD_1303    DMA1_Channel5_IRQHandler
 
#define   DMA_ADC         DMA1_Channel1
 
 
 
#define   Is_Enc_Key_Down()    (!(GPIOA->IDR & GPIO_Pin_0))
 
 
typedef   struct  _ADResult_t
 
{
 
  uint16_t   ADRef;    // ADC1 
 
  uint16_t   ADBat;    // ADC2
 
  uint16_t   ADX;      // ADC1
 
  uint16_t   ADY;      // ADC2
 
  uint16_t   ADZ;      // ADC1
 
  uint16_t   ADChg;    // ADC2
 
}ADResult_t;
 
 
#endif
ssd1306.c
Show inline comments
 
@@ -83,7 +83,8 @@ void SSD1303_Init(void)
 
{
 
  /* Generate a reset */
 
  SSD_Reset_Low();
 
  for(u32 i=5000;--i;);//—” ±5uS“‘…œ
 
  uint32_t i ;
 
  for(i=5000;--i;);
 
  SSD_Reset_High();
 
  
 
  /*************************************************
 
@@ -223,7 +224,8 @@ unsigned long SSD1303_OFF(void)
 
{
 
  if(iS_SSD_On){
 
#ifdef  DEBUG_UI
 
    for(u32 i=0;i<SSD1303_COLUMN_NUMBER*SSD1303_PAGE_NUMBER;i++){
 
    uint32_t i = 0;
 
    for(i=0;i<SSD1303_COLUMN_NUMBER*SSD1303_PAGE_NUMBER;i++){
 
      SSD1303_Buffer[i] = 0;
 
    }
 
#else
 
@@ -299,18 +301,18 @@ void  OnPageTransferDone(void)
 
    WriteCommand(0x10);
 
  }
 
  SSD_A0_High();
 
  DMA1_Channel5->CCR &= ((u32)0xFFFFFFFE);
 
  DMA1_Channel5->CCR &= ((uint32_t)0xFFFFFFFE);
 
  DMA1_Channel5->CNDTR = SSD1303_COLUMN_NUMBER+SSD1303_COLUMN_MARGIN_START + SSD1303_COLUMN_MARGIN_END;
 
  DMA1_Channel5->CMAR = (u32)(SSD1303_Buffer+SSD1303_COLUMN_NUMBER*pageIndex - SSD1303_COLUMN_MARGIN_START);
 
  DMA_SSD_1303->CCR |= ((u32)0x00000001);
 
  DMA1_Channel5->CMAR = (uint32_t)(SSD1303_Buffer+SSD1303_COLUMN_NUMBER*pageIndex - SSD1303_COLUMN_MARGIN_START);
 
  DMA_SSD_1303->CCR |= ((uint32_t)0x00000001);
 
  pageIndex++;
 
#else
 
  SSD_A0_High();
 
  DMA_SSD_1303->CCR &= ((u32)0xFFFFFFFE);
 
  DMA_SSD_1303->CCR &= ((uint32_t)0xFFFFFFFE);
 
  DMA_SSD_1303->CNDTR = SSD1303_COLUMN_NUMBER*SSD1303_PAGE_NUMBER;//+SSD1303_COLUMN_MARGIN_START + SSD1303_COLUMN_MARGIN_END;
 
  DMA_SSD_1303->CMAR = (u32)(SSD1303_Buffer);//+SSD1303_COLUMN_NUMBER*pageIndex);
 
  DMA_SSD_1303->CMAR = (uint32_t)(SSD1303_Buffer);//+SSD1303_COLUMN_NUMBER*pageIndex);
 
  //DMA_Cmd(DMA_SSD_1303, ENABLE);
 
  DMA_SSD_1303->CCR |= ((u32)0x00000001);
 
  DMA_SSD_1303->CCR |= ((uint32_t)0x00000001);
 
//  pageIndex++;
 
  pageIndex = SSD1303_PAGE_NUMBER;
 
#endif
 
@@ -389,7 +391,9 @@ unsigned long SSD1303_DrawBlock(
 
    unsigned char mask1 = (1<<offset1)-1;
 
    unsigned char mask2 = ~((1<<offset2)-1);
 
    cy = (cy+offset1)/8;
 
    for(Pos_t i=0;i<cx;i++){
 
   
 
    Pos_t i = 0;
 
    for(i=0;i<cx;i++){
 
      Pos_t j = 0;
 
      unsigned short tmp = *pStart & mask1;
 
      for(;j<cy;j++){
 
@@ -409,7 +413,9 @@ unsigned long SSD1303_DrawBlock(
 
    unsigned char mask1 = ~((1<<offset1)-1);
 
    unsigned char mask2 = ((1<<offset2)-1);
 
    cy = (cy+offset1)/8;
 
    for(Pos_t i=0;i<cx;i++){
 
 
    Pos_t i = 0;
 
    for(i=0;i<cx;i++){
 
      Pos_t j = 1;
 
      *pStart ^= mask1;
 
      for(;j<cy;j++){
 
@@ -512,7 +518,8 @@ unsigned long SSD1303_ReadPoint(
 
void  SSD1303_FillScreen(Color_t color)
 
{
 
  unsigned char mask = color ? 0xFF : 0;
 
  for(unsigned long i=0;i<SSD1303_COLUMN_NUMBER*SSD1303_PAGE_NUMBER;i++){
 
  unsigned long i = 0;
 
  for(i=0;i<SSD1303_COLUMN_NUMBER*SSD1303_PAGE_NUMBER;i++){
 
    SSD1303_Buffer[i] = mask;
 
  }
 
}
0 comments (0 inline, 0 general)