1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Jieli-Tech-fw-AC63_BT_SDK

 / Детали:

ЗАМЕЧАНИЕ: Специальное использование IO AC632X (P00, PP0, PB2, PA9, usb0, usb1)

Предстоит сделать
Владелец
Создано  
05.03.2025

1. PB2, по умолчанию выполняется мгновенная аппаратная сбросовая операция микросхемы, то есть кнопка сброса MCLR на плате.

Внимание: PB2 по умолчанию не должна быть заземлена (например, соединение с лампой или катодом триодного транзистора), в противном случае устройство может не запуститься.

Соответствующий вывод: ВЦМ источник сброса

Есть два способа отключения:

Через код:

//VCM_DET_EN(0); //Отключение источника сброса ВЦМ
gpio_shortpress_reset_config(0); //1 -- включено, 0 -- выключено

Запись через программатор:
Убрать галочку возле PB2

2. PA9, по умолчанию выполняется аппаратная сбросовая операция микросхемы при заземлении на 8 секунд.

Соответствующий вывод: ППИНР источник сброса

Программно можно изменить другой входной сигнал, время сброса или состояние включения/выключения.

//P33_CON_SET(P3_PINR_CON, 0, 1, 0); //Отключение длиннопresses сброса
//P33_CON_SET(P3_PINR_CON, 0, 1, 1); //Включение длиннопresses сброса
gpio_longpress_pin0_reset_config(IO_PORTA_09, 0, 0);

Код контролирует только состояние включения/выключения, изменение входного сигнала производится в ini-файле.

Для версий до 100:

RESET=PB01_08_0; //port_время_эффективный уровень (время может быть 00, 04, 08, единицы измерения — секунды, когда время равно 00, функция длиннопresses сброса отключается.)
```Для версий после 200:
```c
#define CONFIG_RESET_PIN PB01 //входной пин
#define CONFIG_RESET_TIME 8   //единица измерения: секунды
#define CONFIG_RESET_LEVEL 0  //уровень триггера (0/1)

3. GPIO P00 — это не порт CPU, а вход/выход модуля периферийного устройства. Рекомендовано использовать только для вывода низкого и высокого уровня.

Внутренний пулл-вверх нельзя отключить, он всегда включен.

//Регистр P11_PORT_CON0 управляет P00,
//P00: BIT(7) | BIT(6) | BIT(5) | BIT(4) | BIT(3) | BIT(2) | BIT(1) | BIT(0)
//     зарезервировано | чтение значения входа | пулл-вверх | пулл-вниз | цифровой вход | цифровой вход | включение выхода | значение выхода
#include "asm/power/p11.h"
int gpio_p00_set(u8 dir, u8 value) //dir: 0 (value: значение выхода) //dir: 1 (value: состояние входа с пулл-вверхом и пулл-внизом)
{
    log_info("%s[dir:%d  value:%d]", __func__, dir, value);
    if(dir){
        P11_PORT_CON0 = BIT(3);
        /* P11_PORT_CON0 &= ~(BIT(4)|BIT(5)); */
        if(value == 0){ //при чтении входа, 0 — активация пулл-вниз, 1 — активация пулл-вверх, other — отключение обоих пуллов
            P11_PORT_CON0 |= BIT(4);
        } else if(value == 1){
            P11_PORT_CON0 |= BIT(5);
        }
        delay(100);
        //log_info("%s[P11_PORT_CON0:0x%x]", __func__, P11_PORT_CON0);
        //log_info("%s[P11_PORT_CON1:0x%x]", __func__, P11_PORT_CON1);
        return (P11_PORT_CON0 & BIT(6)) >> 6;
    } else {
        if(value){
            P11_PORT_CON0 = BIT(1) | BIT(0);  //выход 1
        } else {
            P11_PORT_CON0 = BIT(1);           //выход 0
        }
        return 0;
    }
}
int gpio_p00_get(void)
{
    if (!(P11_PORT_CON0 & BIT(3))) {
        return -1;
    }
    int value = (P11_PORT_CON0 & BIT(6)) >> 6;
    log_info("%s[value:%d]", __func__, value);
    return value;
}
```## 4. PP0 — это нога LDOIN для зарядки батареи. Используется аналогично обычному GPIO.

Использование PP0 как обычного GPIO приведёт к невозможности использования функции зарядки.

```c
#define TCFG_CHARGE_ENABLE      DISABLE_THIS_MODULE
u32 gpio = IO_PORTP_00;
gpio_set_pull_down(gpio, 0);
gpio_set_pull_up(gpio, 0);
gpio_set_die(gpio, 1);
gpio_set_hd(gpio, 0);
gpio_set_hd0(gpio, 0);
gpio_set_direction(gpio, 0);
gpio_set_output_value(gpio, 1);

5. USB0, USB1 при использовании как обычных GPIO

usb_iomode(1);       // Вызовите эту функцию первой, чтобы переключить USB в режим GPIO
gpio_set_pull_up(IO_PORT_DP, 0);
gpio_set_pull_down(IO_PORT_DP, 0);
gpio_set_direction(IO_PORT_DP, 1);
gpio_set_die(IO_PORT_DP, 0);
gpio_set_dieh(IO_PORT_DP, 0);
gpio_set_pull_up(IO_PORT_DM, 0);
gpio_set_pull_down(IO_PORT_DM, 0);
gpio_set_direction(IO_PORT_DM, 1);
gpio_set_die(IO_PORT_DM, 0);
gpio_set_dieh(IO_PORT_DM, 0);

usb1_iomode(bk);   // Выполните эту функцию первой, чтобы переключить USB в режим GPIO
gpio_set_pull_up(IO_PORT_DP1, 0);
gpio_set_pull_down(IO_PORT_DP1, 0);
gpio_set_direction(IO_PORT_DP1, 1);
gpio_set_die(IO_PORT_DP1, 0);
gpio_set_dieh(IO_PORT_DP1, 0);

gpio_set_pull_up(IO_PORT_DM1, 0);
gpio_set_pull_down(IO_PORT_DM1, 0);
gpio_set_direction(IO_PORT_DM1, 1);
gpio_set_die(IO_PORT_DM1, 0);
gpio_set_dieh(IO_PORT_DM1, 0);

введите описание изображения здесь

Приведённая выше схема показывает, что способность USB-порта передавать данные отличается от аналогичной функции GPIO. Это может повлиять на скорость передачи данных при использовании порта как средства связи. Для обеспечения возможности подключения внешних резисторов рекомендуется предусмотреть пайку для установки этих резисторов.

Комментарий (0)

GitLife Service Account Задача создана
GitLife Service Account добавлено
 
外设驱动相关
label.
Развернуть журнал операций

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/Jieli-Tech-fw-AC63_BT_SDK.git
git@api.gitlife.ru:oschina-mirror/Jieli-Tech-fw-AC63_BT_SDK.git
oschina-mirror
Jieli-Tech-fw-AC63_BT_SDK
Jieli-Tech-fw-AC63_BT_SDK