资源简介
SC7A20加速度传感器驱动,SC7A20加速度传感器驱动,SC7A20加速度传感器驱动。
代码片段和文件信息
#include “Analog_IIC.h“
/*
@16M---精确延时到微秒
*/
void Analog_IIC_Delay(u8 n)//@16M---精确延时到微秒
{
n = n;
nop();
nop();
nop();
}
/*
模拟IIC引脚方向配置
*/
void Analog_IIC_Pin_Init(void)
{
GPIOC->DDR |= ((uint8_t)0x01);//PC0 IIC_SDA 输出
GPIOC->CR1 |= ((uint8_t)0x01);//PC0 IIC_SDA 推挽
GPIOC->DDR |= ((uint8_t)0x02);//PC1 IIC_SCL 输出
GPIOC->CR1 |= ((uint8_t)0x02);//PC1 IIC_SCL 推挽
IIC_SCL_1; //拉高时钟线
IIC_SDA_1; //拉高数据线
}
/*
模拟IIC_SDA引脚方向配置
参数值 1 输出
0 输入
*/
void IIC_SDA_Dir(u8 d)
{
if(d == 1)//输出
{
GPIOC->DDR |= ((uint8_t)0x01);//PC0 IIC_SDA 输出
GPIOC->CR1 |= ((uint8_t)0x01);//PC0 IIC_SDA 推挽
}
else if(d == 0)//输入
{
GPIOC->DDR &= ((uint8_t)~0x01);//PC0 IIC_SDA 输入
GPIOC->CR1 &= ((uint8_t)~0x01);//PC0 IIC_SDA 浮空
}
}
//产生IIC起始信号
void IIC_Start(void)
{
IIC_SDA_Dir(1);//IIC_SDA线输出
IIC_SDA_1; //拉高数据线
IIC_SCL_1; //拉高时钟线
Analog_IIC_Delay(10);
IIC_SDA_0; //拉低数据线
Analog_IIC_Delay(10);
IIC_SCL_0; //拉低时钟线 发送IIC总线开始信号
}
//产生IIC停止信号
void IIC_Stop(void)
{
IIC_SDA_Dir(1);//IIC_SDA线输出
IIC_SCL_0; //拉低时钟线
IIC_SDA_0; //拉低数据线
Analog_IIC_Delay(10);
IIC_SCL_1; //拉高时钟线
Analog_IIC_Delay(10);
IIC_SDA_1; //拉高数据线 发送IIC总线停止信号
Analog_IIC_Delay(10);
}
//产生ACK应答
void IIC_Ack(void)
{
IIC_SCL_0; //拉低时钟线
IIC_SDA_Dir(1);//IIC_SDA线输出
IIC_SDA_0; //拉低数据线
Analog_IIC_Delay(10);
IIC_SCL_1; //拉高时钟线
Analog_IIC_Delay(10);
IIC_SCL_0; //拉低时钟线
}
//不产生ACK应答
void IIC_NAck(void)
{
IIC_SCL_0; //拉低时钟线
IIC_SDA_Dir(1);//IIC_SDA线输出
IIC_SDA_1; //拉高数据线
Analog_IIC_Delay(10);
IIC_SCL_1; //拉高时钟线
Analog_IIC_Delay(10);
IIC_SCL_0; //拉低时钟线
}
//等待应答信号到来
//返回值:1 接收应答失败
// 0 接收应答成功
u8 IIC_Wait_Ack(void)
{
u8 Wait_TOut_Cnt = 0;//设置等待应答信号超时计数
IIC_SDA_Dir(0); //IIC_SDA线输入
IIC_SDA_1; //拉高数据线
Analog_IIC_Delay(10);
IIC_SCL_1; //拉高时钟线 等待应答信号
Analog_IIC_Delay(10);
while(IIC_SDA)
{
Wait_TOut_Cnt++;
if(Wait_TOut_Cnt > 250)
{
IIC_Stop(); //等待应答信号超时 发送IIC总线停止信号
return 1;
}
}
IIC_SCL_0; //拉低时钟线 结束应答信号
return 0;
}
//IIC发送一个字节
void IIC_Write_Byte(u8 WByte)
{
u8 Wb_Cnt = 0; //写数据位计数
IIC_SDA_Dir(1);//IIC_SDA线输出
IIC_SCL_0; //拉低时钟线 开始数据传输
for(Wb_Cnt=0; Wb_Cnt<8; Wb_Cnt++)
{
if(WByte&0x80)
{
IIC_SDA_1;
}
else
{
IIC_SDA_0;
}
WByte <<= 1; //数据移位
Analog_IIC_Delay(10);
IIC_SCL_1; //拉高时钟线
Analog_IIC_Delay(10);
IIC_SCL_0; //拉低时钟线 准备开始传送数据位
Analog_IIC_Delay(10);
}
}
//IIC读取一个字节
//参数值:1 发送Ack
// 0 不发送Ack
u8 IIC_Read_Byte(u8 SF_Ack)
{
u8 Rb_Cnt = 0; //读数据位计数
u8 RByte = 0; //读字节
IIC_SDA_Dir(0);//SDA设置为输入
for(Rb_Cnt=0; Rb_Cnt<8; Rb_Cnt++)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6200 2017-03-14 09:17 SC7A20驱动\Analog_IIC.c
文件 955 2017-04-25 16:41 SC7A20驱动\Analog_IIC.h
文件 15159 2017-03-21 09:00 SC7A20驱动\drv_l1_gsensor.c
文件 3704 2017-03-21 08:57 SC7A20驱动\drv_l1_gsensor.h
文件 2675 2017-05-05 17:15 SC7A20驱动\SC7A20.c
目录 0 2017-05-06 09:29 SC7A20驱动
文件 1602327 2017-04-14 16:46 SC7660-SC7A30E-SC7A20内部功能应用说明书_0.2.pdf
文件 623318 2017-03-31 10:30 SC7A20说明书_0.6_带寄存器描述_?.pdf
----------- --------- ---------- ----- ----
2254338 8
相关资源
- mems MEMS加速度传感器致力汽车主安全
- STM32F1单片机MPU6050加速度计陀螺仪驱动
- STM8L_MPU6500_DMP_震动唤醒
- MLX90621红外传感器驱动程序
- LSM6DSL陀螺仪+加速度传感器带中断唤醒
- 基于stm32的六轴传感器驱动工程文件
- 毕业论文_基于加速度传感器的计步器
- SPI读取MPU9250 9轴加速度,陀螺仪,磁
- STM32-SHT20温湿度传感器驱动程序
- 基于STM32F103C8T6及NRF24L01的摔倒检测+
- MMA7660 学习资料
- 中国地震动峰值加速度区划图kml格式
- 三轴加速度adxl345 stm32 程序
- 平衡车卡尔曼滤波
- MMA7361例程和资料整理
- FPS2800B12C4流体特性传感器驱动程序
- 人类活动振动加速度数据吗,用于人
- MMA8452资料及源码
- 基于类别不平衡手机加速度传感器数
- 手机加速度传感器Demo源码
- 利用STM32硬件I2C使用加速度传感器AD
- ADXL345加速度传感器 32F103mini板
- 基于单个加速度传感器的人体运动模
- stm32读取ADXL345加速度传感器数据IIC协
- 博世BMA400加速度传感器
- 惯性导航秦永元编著
- MMA7660加速度传感器驱动
- 基于STM32G071RBT的SPI读取ADXL357加速度和
- 基于STM32F103测试代码_支持IIC和SPI li
- GY-85集成加速度传感器、陀螺仪、电子
评论
共有 条评论