• 大小: 8KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: 其他
  • 标签: cypress  cy8cmbr3106s  

资源简介

cypress触摸芯片cy8cmbr3106s驱动程序,项目中正常使用。

资源截图

代码片段和文件信息


#include “CY8CMBR3106S.h“
#define I2C_ADDR 0x37
void delay_us(uint32_t nus)
{

      uint32_t ij;
      for(i=nus; i != 0; i--)
  {
for(j=2; j != 0; j--); 
  }
}

static void SDA_IN() 
{
GPIO_InitTypeDef GPIO_InitStruct;

  GPIO_InitStruct.Pin = GPIO_PIN_10;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_PULLDOWN;// GPIO_NOPULL;
  HAL_GPIO_Init(GPIOA &GPIO_InitStruct);

}
static void SDA_OUT()
{
  
GPIO_InitTypeDef GPIO_InitStruct;

GPIO_InitStruct.Pin = GPIO_PIN_10;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
HAL_GPIO_Init(GPIOA &GPIO_InitStruct);
//HAL_GPIO_WritePin(GPIOA GPIO_PIN_10 GPIO_PIN_RESET);
}

static void SCL_IN()
{
GPIO_InitTypeDef GPIO_InitStruct;

/* GPIO Ports Clock Enable */
// __GPIOC_CLK_ENABLE();
// __GPIOA_CLK_ENABLE();
// __GPIOB_CLK_ENABLE();

GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;// GPIO_NOPULL;
HAL_GPIO_Init(GPIOA &GPIO_InitStruct);
}
static void SCL_OUT()
{
GPIO_InitTypeDef GPIO_InitStruct;

GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
HAL_GPIO_Init(GPIOA &GPIO_InitStruct);
}

static void SDA_1()
{
HAL_GPIO_WritePin(GPIOA GPIO_PIN_10 GPIO_PIN_SET);
}
static void SDA_0()
{
HAL_GPIO_WritePin(GPIOA GPIO_PIN_10 GPIO_PIN_RESET);
}
static void SCL_1()
{
HAL_GPIO_WritePin(GPIOA GPIO_PIN_9 GPIO_PIN_SET);
}
static void SCL_0()
{
HAL_GPIO_WritePin(GPIOA GPIO_PIN_9 GPIO_PIN_RESET);
}

static uint8_t READ_SDA()
{

return HAL_GPIO_ReadPin(GPIOAGPIO_PIN_10);
}
static uint8_t READ_SCL()
{

return HAL_GPIO_ReadPin(GPIOAGPIO_PIN_9);
}
static void IIC_Init(void)
{      
GPIO_InitTypeDef GPIO_InitStruct;

/* GPIO Ports Clock Enable */
__GPIOC_CLK_ENABLE();
__GPIOA_CLK_ENABLE();
__GPIOB_CLK_ENABLE();

/*Configure GPIO pin Output Level */
//HAL_GPIO_WritePin(GPIOA GPIO_PIN_12 GPIO_PIN_SET);

GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
HAL_GPIO_Init(GPIOA &GPIO_InitStruct);
}

static void IIC_Start(void)
{
SDA_OUT(); 
//start//
SDA_0();
delay_us(10);
SCL_0();
delay_us(10);
}   


static void IIC_Stop(void)
{
//stop
   SDA_0();
delay_us(10);
SCL_1();
delay_us(10);
SDA_1();

delay_us(20);    
}

static uint8_t IIC_Wait_Ack(void)
{
uint8_t ucErrTime=0;
SDA_IN();      
//SDA_1();
delay_us(10);    
SCL_1();
delay_us(10);  
//uint8_t cur = READ_SDA();
while(READ_SDA())
{
ucErrTime++;
if(ucErrTime>250)
{
IIC_Stop();
return 1;
}
}
SCL_0(); 
delay_us(20);
SDA_OUT();
return 0;  



评论

共有 条评论