/** ********************************************************************************************************************** * @file oledio.c * @brief ���ļ��ṩ OLED ����Ӳ���ӿ���ع��� * @author ������ any question please send mail to const_zpc@163.com * @version V1.0.0 * @date 2021-3-12 * * @details ������ϸ˵���� * + �ӿ�����ͨ�Žӿڶ��� * + ������ʼ������ * + ����ͨ�ź��� * ********************************************************************************************************************** * * ********************************************************************************************************************** */ /* Includes ----------------------------------------------------------------------------------------------------------*/ #include "oledio.h" /* Private typedef ---------------------------------------------------------------------------------------------------*/ /* Private define ----------------------------------------------------------------------------------------------------*/ /* Private macro -----------------------------------------------------------------------------------------------------*/ /* Private variables -------------------------------------------------------------------------------------------------*/ /* Private function prototypes ---------------------------------------------------------------------------------------*/ /* Private function --------------------------------------------------------------------------------------------------*/ /** * @brief Ӳ���ײ��ʼ��. * @retval None. */ void OledDrv_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; /* ʹ�ܶ˿ڸ���ʱ�� GPIOA GPIOB ʱ��*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOA, ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //ʧ��JTAG GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //������� GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_SetBits(GPIOB, GPIO_Pin_3 | GPIO_Pin_5); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_15; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_ResetBits(GPIOA, GPIO_Pin_11); GPIO_SetBits(GPIOA, GPIO_Pin_15); } #if _DRIVE_INTERFACE_TYPE == OLED_IIC_INTERFACE /** * @brief IIC ͨ�ſ�ʼ. * @retval None. */ void OledDrv_IICStart(void) { OLED_SCLK_Set() ; OLED_SDIN_Set(); OLED_SDIN_Clr(); OLED_SCLK_Clr(); } /** * @brief IIC ͨ��ֹͣ. * @retval None. */ void OledDrv_IICStop(void) { OLED_SCLK_Clr(); OLED_SDIN_Clr(); OLED_SDIN_Set(); OLED_SCLK_Set() ; } /** * @brief IIC д��һ���ֽ�. * @param[in] data �ֽ�����. * @retval None. */ void OledDrv_IICWriteByte(uint8_t data) { char i = 8; while (i--) { OLED_SCLK_Clr(); if (data & 0x80) { OLED_SDIN_Set(); } else { OLED_SDIN_Clr(); } OLED_SCLK_Set(); data <<= 1; } OLED_SCLK_Clr(); OLED_SCLK_Set(); } #else /** * @brief SPI д��һ���ֽ�. * @param[in] data �ֽ�����. * @retval None. */ void OledDrv_SPIWriteByte(uint8_t data) { char i = 8; OLED_CLK_Clr(); while (i--) { if (data & 0x80) { OLED_DIN_Set(); } else { OLED_DIN_Clr(); } OLED_CLK_Set(); OLED_CLK_Clr(); data <<= 1; } } #endif