在使用AT软件包的时候,这里有一个电源引脚和电源状态引脚的配置。
对应的代码包含电两个管脚的初始化配置和上电断电函数。
static void ec20_power_on(struct at_device *device)
{
struct at_device_ec20 *ec20 = RT_NULL;
ec20 = (struct at_device_ec20 *)device->user_data;
/* not nead to set pin configuration for ec20 device power on */
if (ec20->power_pin == -1 || ec20->power_status_pin == -1)
{
return;
}
if (rt_pin_read(ec20->power_status_pin) == PIN_HIGH)
{
return;
}
rt_pin_write(ec20->power_pin, PIN_HIGH);
while (rt_pin_read(ec20->power_status_pin) == PIN_LOW)
{
rt_thread_mdelay(10);
}
rt_pin_write(ec20->power_pin, PIN_LOW);
}
static void ec20_power_off(struct at_device *device)
{
struct at_device_ec20 *ec20 = RT_NULL;
ec20 = (struct at_device_ec20 *)device->user_data;
/* not nead to set pin configuration for ec20 device power on */
if (ec20->power_pin == -1 || ec20->power_status_pin == -1)
{
return;
}
if (rt_pin_read(ec20->power_status_pin) == PIN_LOW)
{
return;
}
rt_pin_write(ec20->power_pin, PIN_HIGH);
while (rt_pin_read(ec20->power_status_pin) == PIN_HIGH)
{
rt_thread_mdelay(10);
}
rt_pin_write(ec20->power_pin, PIN_LOW);
}
那么这里就存在两个问题,第一个是上电有效电平:
根据这里的硬件设计,我是PWR_ON=0的时候,EC20的供电才有输出,所以这里的有效电平需要修改。
另外一个,就是我们并没有做额外的电源状态power_status_pin
,其实可以直接读取power_pin
的值就行了,如果我们把两个引脚设置为同一个,那么这个引脚就会先被配置成输出模式,再被配置成输入模式,实际并没有办法输出,所以这里的顺序也要修改一下。
修改之前的运行效果是这样的:
修改完了重新下载程序,初始化成功。