GPIO接口
<h5>GPIO接口</h5>
<pre><code>/*锁接口*/
#define GPIO_LOCK1_CTL (32+21) //PB21 1开锁;0关锁
#define GPIO_LOCK1_STAT (32+30) //PB30 1锁已经锁上 0 没锁
#define GPIO_DOOR1_STAT (32+31) //PB31 1门已经关上 0 没关
/系统指示灯/
#define GPIO_PLTLED (32+27) // PB27 系统指示灯 1亮 0灭
/市电/电池检测/
#define POWER_DETECT_PIN (32+29) // PB29 0电池 1市电
4G模组上下电控制
#define LTE_PWRCTL (11) // PA11 持续输出 1秒 1KHZ 方波 下电,其他上电
锁上下电控制
#define LOCK_PWRCTL (14) // PA14 持续输出 1秒 1KHZ 方波 下电,其他上电
整机电源控制主动断电
#define DEVICE_PWRCTL (32+18) // PB18 持续输出 1秒 1KHZ 方波 下电,其他上电
</code></pre>
<h5>锁插入检测 这里设备使用了adc,检测示例代码如下</h5>
<pre><code>static int adc_init()
{
int ret = -1;
int vol_n = 0, tmp_v = 0;
g_adc_fd = open("/dev/jz_adc_aux_0", O_RDONLY);
if(g_adc_fd < 0) {
printf("—> sample_adc:open error <—!\n");
ret = -1;
return ret;
}
vol_n = 1800;
ret = ioctl(g_adc_fd, ADC_SET_VREF, &vol_n);
if(ret){
printf("—> Failed to set reference voltage! <—\n");
return -1;
}
/* enable adc */
ret = ioctl(g_adc_fd, ADC_ENABLE);
read(g_adc_fd, &tmp_v , sizeof(int));
if(value > 100)
{
printf(“lock is on line tmp_v = %d\n”, tmp_v );
}
else
{
printf(“lock is off line tmp_v = %d\n”, tmp_v );
}
return 0;
}</code></pre>