-
大小: 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;
}
- 上一篇:addFlowFor.net 画流程图的
- 下一篇:传说中的嗜睡理发师程序
评论
共有 条评论