这个MPU6050使用的是IIC驱动的,而在具体电路图中没有使用STM8S自带的硬件IIC接口,所使用的是模拟IIC,
需要指出的是,在STM8S,IO配置的时候,SDA,对于挂SDA的IO来说,在STM8S的处理器上IO是没有真正的开漏输出功能的,
也就是将该IO配置成开漏输出的时候,IO高低电平输出实际是没有变化的,所以在IO具体输出或者读取状态的时候,必须切换IO模式,
另外需要注意的是,在配置IO的输出模式的时候,最好直接使用寄存器操作,如果使用
g_sda_output();
Handler_G_SDA_L;,也就是库函数操作的话,那么在配置成输出模式之后,并且接下来的代码立即输出高或者低的时候,
在电平的变化上会有5NS的时间开销,所以在使用STM8S,配置IO的时候,请尽量使用寄存器模式去操作!!
#ifndef __G1665_H
#define __G1665_H
#include "glib_api.h"
#define Handler_G_SDA_H (GPIOC->ODR |= GPIO_PIN_1)
#define Handler_G_SDA_L (GPIOC->ODR &=~ GPIO_PIN_1)
#define Handler_G_SCL_H (GPIOC->ODR |= GPIO_PIN_4)
#define Handler_G_SCL_L (GPIOC->ODR &=~ GPIO_PIN_4)
#define Handler_R_G_SDA (GPIOC->IDR &GPIO_PIN_1)
#define c_g_reg_pwr_mgr_1 0x6b
#define c_g_reg_smplrt 0x19
#define c_g_reg_config 0x1a
#define c_g_reg_gyro_config 0x1b
#define c_g_reg_accel_config 0x1c
#define c_g_reg_accel_xout_h0x3b
#define c_g_reg_accel_xout_l0x3c
#define c_g_reg_accel_yout_h0x3d
#define c_g_reg_accel_yout_l0x3e
#define c_g_reg_accel_zout_h0x3f
#define c_g_reg_accel_zout_l0x40
#define c_g_reg_temp_out_h0x41
#define c_g_reg_temp_out_l0x42
#define c_g_reg_xout_h 0x43
#define c_g_Reg_xout_l 0x44
#define c_g_reg_yout_h 0x45
#define c_g_reg_yout_l 0x46
#define c_g_reg_zout_h 0x47
#define c_g_Reg_zout_l 0x48
void gsensor_wirte(unsigned char reg_address,unsigned char data);
unsigned char gsensor_read(unsigned char reg_address);
void g_mpu6050_init(void);
#endif
上一篇:STM8+开发环境、最小项目工程、最小系统
下一篇:STM8唯一ID号加密方法
推荐阅读最新更新时间:2024-11-03 23:32
设计资源 培训 开发板 精华推荐
- 大容量电源/基站电源用光电耦合器
- L7806A 高电容负载输入短路保护的典型应用
- 【RA】基于瑞萨R7FA2E1的彩灯矩阵
- #第七届立创电赛#USb电流表
- LTC3803HS6-3、3.3V 输出隔离反激式 DC/DC 转换器的典型应用电路
- LTC2945IUD 电源监控在 -48V 恶劣环境中的典型应用,使用 INTVCC 并联稳压器以承受 200V 瞬态
- LT3791EFE 98.5% 高效 100W (33.3V/3A) 降压-升压型 LED 驱动器的典型应用电路
- 某腾PW918剃须刀
- ADR365A、5V 低功耗、低噪声堆叠电压基准的典型应用
- 使用 Richtek Technology Corporation 的 RT8241E 的参考设计