Exemple #1
0
//向SSD1106写入一个字节。
//dat:要写入的数据/命令
//cmd:数据/命令标志 0,表示命令;1,表示数据;
void OLED_WR_Byte(u8 dat,u8 cmd)
{
  OSStatus err = kUnknownErr;
  
  platform_spi_message_segment_t oled_spi_msg =
            { &dat,            NULL,       (unsigned long) 1 };
  
  OLED_DC_INIT();   // incase SPI is re-init by other work
  
//  u8 i;			  
  if(cmd)
    OLED_DC_Set();
  else 
    OLED_DC_Clr();		  
  //OLED_CS_Clr();
  
// for(i=0;i<8;i++)
//  {			  
//    OLED_SCLK_Clr();
//    if(dat&0x80)
//      OLED_SDIN_Set();
//    else 
//      OLED_SDIN_Clr();
//    OLED_SCLK_Set();
//    dat<<=1;   
//  }

 // *((uint8_t*)oled_spi_msg.tx_buffer) = dat;
// oled_spi_msg.length = 1;
  err = MicoSpiTransfer(&micokit_spi_oled, &oled_spi_msg, 1);
  UNUSED_PARAMETER(err);
  
 // OLED_CS_Set();
  OLED_DC_Set();   	  
} 
extern int sflash_platform_send_recv ( const void* platform_peripheral, /*@in@*/ /*@out@*/ sflash_platform_message_segment_t* segments, unsigned int num_segments  )
{
    UNUSED_PARAMETER( platform_peripheral );

    if ( kNoErr != MicoSpiTransfer( &mico_spi_flash, (mico_spi_message_segment_t*) segments, (uint16_t) num_segments ) )
    {
        return -1;
    }

    return 0;
}
//data:要写入的数据
//返回值:读到的数据
u8 VS_SPI_ReadWriteByte(u8 data)
{
    mico_spi_message_segment_t segments;
    u8 rx_data = 0;
    
    segments.tx_buffer = &data;
    segments.rx_buffer = &rx_data;
    segments.length =  (unsigned long) 1 ;
     
    if ( kNoErr != MicoSpiTransfer( &mico_spi_VS10XX,  &segments,  1))
    {
        return -1;
    }
   // printf("data=0x%x, rx_data=0x%x\t\n",data, rx_data);
    return rx_data;
}