Files
QDAC-firmware/libraries/zf_device/zf_device_dm1xa.h

122 lines
5.5 KiB
C
Raw Permalink Normal View History

2023-12-11 21:45:06 +08:00
/*********************************************************************************************************************
* CH32V307VCT6 Opensourec Library CH32V307VCT6 SDK
* Copyright (c) 2022 SEEKFREE
*
* CH32V307VCT6
*
* CH32V307VCT6
* GPLGNU General Public License GNU通用公共许可证
* GPL 3 GPL3.0/
*
*
*
* GPL
*
* GPL
* <https://www.gnu.org/licenses/>
*
*
* 使 GPL3.0
* libraries/doc GPL3_permission_statement.txt
* libraries LICENSE
* 使
*
* zf_device_dm1xa
*
* libraries/doc version
* MounRiver Studio V1.8.1
* CH32V307VCT6
* https://seekfree.taobao.com/
*
*
*
* 2023-03-18 W first version
********************************************************************************************************************/
/*********************************************************************************************************************
* 线
* ------------------------------------
* (MCU版本 <DM1TA>)
*
* FB zf_device_dm1xa.h DM1XA_FB_PIN
* EN zf_device_dm1xa.h DM1XA_EN_PIN
* 5V 5V
* GND
* ------------------------------------
* ------------------------------------
* (MCU版本 <DM1RA>)
*
* S zf_device_dm1xa.h DM1XA_S_PIN
* L zf_device_dm1xa.h DM1XA_L_PIN
* 5V 5V
* GND
* ------------------------------------
********************************************************************************************************************/
#ifndef _ZF_DEVICE_DM1XA_H_
#define _ZF_DEVICE_DM1XA_H_
#include "zf_common_typedef.h"
// 需要注意 dm1xa_transmitter_ranging / dm1xa_receiver_ranging 的调用周期
// 务必控制在 10-20ms 这个区间
//
// 调用周期决定了最大测距距离 换算公式基本等于 period * 343.2 mm
// 那么 10-20ms 的调用周期区间对应 3432-6864mm 的最大测距范围
//
// 如果 dm1xa_transmitter_ranging / dm1xa_receiver_ranging
// 的调用周期不在 10-20ms 这个区间
// 那么可能出现本驱动的测距信息异常
// DM1TA 模块 引脚对应
#define DM1XA_FB_PIN ( E15 )
#define DM1XA_EN_PIN ( E14 )
// DM1RA 模块 引脚对应
#define DM1XA_S_PIN ( E15 )
#define DM1XA_L_PIN ( E14 )
#define DM1XA_TIM_INDEX ( TIM_7 ) // 固定使用一个定时器
#define DM1XA_SOUND_SPEED_MM_PER_US ( 0.34 ) // 定义声速 340M/s = 0.34 mm/us
#define DM1XA_FB_SEND ( 10 ) // 每次测距 EN 上脉冲时长为 DM1XA_FB_SEND * 1000 / 38 微秒
#if (DM1XA_FB_SEND < 6 || DM1XA_FB_SEND > 100) // 每次测距的载波数 最小 6 最大 100
#error "DM1XA_FB_SEND error, it must be between 6 and 100"
#endif
#define DM1XA_INIT_MAX_COUNT ( 100 ) // 初始化尝试次数
#define DM1XA_RECEIVER_TIMEROUT_US ( 30000 ) // 超时设置 这里不允许用户修改
// DM1XA 模块错误识别码 用户不允许更改
typedef enum
{
DM1XA_NO_ERROR,
DM1XA_TYPE_ERROR,
}dm1xa_error_code_enum;
// DM1XA 模块错误识别码 用户不允许更改
typedef enum
{
DM1XA_RECEIVER_RANGING_NO_SIGNAL,
DM1XA_RECEIVER_RANGING_WAIT_SOUND,
DM1XA_RECEIVER_RANGING_SUCCESS,
}dm1xa_ranging_state_enum;
// DM1XA 模块类型 用户不允许更改
typedef enum
{
DM1XA_NO_INIT,
DM1XA_CHECK_TYPE,
DM1XA_TRANSMITTER,
DM1XA_RECEIVER,
}dm1xa_type_enum;
void dm1xa_sound_callback (void);
void dm1xa_light_callback (void);
uint16 dm1xa_receiver_ranging (void);
void dm1xa_transmitter_ranging (void);
dm1xa_error_code_enum dm1xa_init (void);
#endif