时钟初始化- /* Select HCLK as the clock source of SPI0 */
- CLK_SetModuleClock(SPI0_MODULE, CLK_CLKSEL1_SPI0_S_HCLK, MODULE_NoMsk);
- /* Enable SPI0 peripheral clock */
- CLK_EnableModuleClock(SPI0_MODULE);
PIN初始化,没有使用PC2(MISO)
- /* Setup SPI0 multi-function pins */
- SYS->GPC_MFP &= ~(SYS_GPC_MFP_PC0_Msk | SYS_GPC_MFP_PC1_Msk | SYS_GPC_MFP_PC3_Msk); // SYS_GPC_MFP_PC2_Msk
- SYS->GPC_MFP |= SYS_GPC_MFP_PC0_SPI0_SS0 | SYS_GPC_MFP_PC1_SPI0_CLK | SYS_GPC_MFP_PC3_SPI0_MOSI0; // SYS_GPC_MFP_PC2_SPI0_MISO0
- SYS->ALT_MFP &= ~(SYS_ALT_MFP_PC0_Msk | SYS_ALT_MFP_PC1_Msk | SYS_ALT_MFP_PC3_Msk); // SYS_ALT_MFP_PC2_Msk
- SYS->ALT_MFP |= SYS_ALT_MFP_PC0_SPI0_SS0 | SYS_ALT_MFP_PC1_SPI0_CLK | SYS_ALT_MFP_PC3_SPI0_MOSI0; // SYS_ALT_MFP_PC2_SPI0_MISO0
SPI0配置
- void SPI0_Init(void)
- {
- SPI_Open(SPI0, SPI_MASTER, SPI_MODE_0, 0, 9000000);
- SPI_EnableAutoSS(SPI0, SPI_SS0, SPI_SS_ACTIVE_LOW);
- }
OLED读写
- #ifdef SOFT_SPI
- void OLED_WR_Byte(u8 dat,u8 cmd)
- {
- u8 i;
- if(cmd)
- OLED_DC_Set();
- else
- OLED_DC_Clr();
- OLED_CS_Clr();
- for(i = 0; i < 8; i++)
- {
- OLED_SCL_Clr();
- if(dat & 0x80)
- OLED_SDA_Set();
- else
- OLED_SDA_Clr();
- OLED_SCL_Set();
- dat <<= 1;
- }
- OLED_CS_Set();
- OLED_DC_Set();
- }
- #else
- void OLED_WR_Byte(u8 dat, u8 cmd)
- {
- if(cmd)
- OLED_DC_Set();
- else
- OLED_DC_Clr();
- SPI_WRITE_TX0(SPI0, dat);
- OLED_DC_Set();
- }
- #endif
main函数
- #ifdef SOFT_SPI
- SPI0_Init_Soft();
- #else
- SPI0_Init();
- #endif
- delay_ms(100);
- OLED_Init();
- UART_SetTimeoutCnt(UART0, 40);
- UART0->FCR |= (3 << 4); // 设置UART0的串口FIFO为14字节
- UART_EnableInt(UART0, (UART_IER_RDA_IEN_Msk | UART_IER_RTO_IEN_Msk));
- printf("\n\nCPU [url=home.php?mod=space&uid=72445]@[/url] %dHz\n", SystemCoreClock);
- printf("\n\nUART Sample Program\n");
- t1.IDString = (uint8_t*)"LCC1 V0.0.1";
- printf("please input data:\n");
- delay_ms(500);
- AD5764_Init();
- while(1)
- {
- OLED_Refresh();
- OLED_ShowString(0, 1, t1.IDString, 16, 1);
- }
如果我使用软件模拟SPI,屏幕可以点亮且正常显示,一旦使用硬件SPI0,则不行,起初我以为是SPI的模式、bit数不对,但SPI_MODE_0到SPI_MODE_3,bit数8和32都试过了,还是点不亮,求做过的大佬指点一下吧。急急急。
|