|
- SPI.c
- /*函數(shù)功能: GPIO模擬SPI端口初始化 */
- /*************************************************************************/
- void OLED_SPI_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ,ENABLE);//使能PA端口時鐘
- GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; //端口配置
- GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽輸出
- GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//IO口速度為50MHz
- GPIO_Init(GPIOA,&GPIO_InitStructure);//根據(jù)設(shè)定參數(shù)初始化GPIOA
- }
- /*************************************************************************/
- /*函數(shù)功能: 通過SPIO軟件模擬SPI通信協(xié)議,向模塊(SSD1306)寫入一個字節(jié) */
- /*入口參數(shù): */
- /* data:要寫入的數(shù)據(jù)/命令 */
- /* cmd :數(shù)據(jù)/命令標(biāo)志 0,表示命令;1,表示數(shù)據(jù); */
- /*************************************************************************/
- void SPI_WriteByte(unsigned char data,unsigned char cmd)
- {
- unsigned char i=0;
- OLED_DC =cmd;
- OLED_CLK=0;
- for(i=0;i<8;i++)
- {
- OLED_CLK=0;
- if(data&0x80)OLED_MOSI=1; //從高位到低位
- else OLED_MOSI=0;
- OLED_CLK=1;
- data<<=1;
- }
- OLED_CLK=1;
- OLED_DC=1;
- }
- /*************************************************************************/
- /*函數(shù)功能: 寫命令 */
- /*************************************************************************/
- void WriteCmd(unsigned char cmd)
- {
- SPI_WriteByte(cmd,OLED_CMD);
- }
- /*************************************************************************/
- /*函數(shù)功能: 寫數(shù)據(jù) */
- /*************************************************************************/
- void WriteData(unsigned char data)
- {
- SPI_WriteByte(data,OLED_DATA);
- }
復(fù)制代碼
|
評分
-
查看全部評分
|