//向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; }