1. Внутренний ИОН SDADC включается битом ADCSD->CTRL_bit.PUREF, а также включается автоматически при включении любого канала АЦП.Михаил Каа писал(а): ↑14 апр 2025, 14:17 Возникли вопросы по ADCSD.
1. В РП написано:
"На выходе внутреннего источника опорного напряжения формируется
напряжение (1,2500,125) В. Допускается подключение внешнего источника опорного
напряжения к выводу SDADC_CAP не более (VCC2 / 2) В."
Если отключить источник внутреннего опорного напряжения (ADCSD->CTRL_bit.PUREF = 0;), то на ножке SDADC_CAP все равно присутствует примерно 1,25В. Код из примера работы с ADCSD продолжает работать также - значения соответствует поданному напряжению.
- Означает ли это, что источник не отключился?
- Если наличие напряжения на SDADC_CAP когда PUREF = 0 допустимо, то что будет если подам опорное напряжение ниже (или выше) 1.25В?
- "SDADC_CAP не более (VCC2 / 2) В." - можно ли подать ровно половину VCC2?
2. Из РП не понятно как использовать дифференциальный режим работы с ADCSD.
Пробовал включать бит (ADCSD->DIFF_bit.CH0 = 1;) для нулевого канала, для первого канала, для двух сразу - АЦП перестает реагировать на входные сигналы - как будто на входе ноль, при этом есть флуктуация отсчетов, плюс-минус десяток (ну то есть некий шум все же оцифровывается).
- Как использовать дифференциальный режим работы с ADCSD?
- Верно ли предполагаю, что в таком режиме для одного АЦП нужны две входные ножки (например CH0 и CH1 для 0 канала)?
*********************************************************************************************************************************************************************************
Вопрос по ключам компиляции при сборке проекта.
Сейчас сборка идет с использованием самописного makefile
Ключи компиляции
CPU = -march=rv32imfc -msmall-data-limit=8 -mstrict-align -mno-save-restore -Og -fmessage-length=0 -fsigned-char -fno-common -fno-builtin -flto -ggdb
FPU = -mabi=ilp32f
FPU += -u _printf_float
MCU = $(CPU) $(FPU)
Компилятор riscv-none-elf-gcc
gcc version 14.2.0 (xPack GNU RISC-V Embedded GCC x86_64)
Суть вопроса:
- Правильно указаны ключи?
- Правильная версия компилятора?
- Есть какие ни будь рекомендации по написанию кода, чтобы не попадать на MCAUSE_EXCEPT_LOADADDRMISALGN ?
Поэтому можно подключить внешний ИОН, который будет передавливать внутренний источник опорного напряжения. Внутренний ИОН без буферизации, поэтому можно передавить внешним ИОН с током не менее 1мА.
2. В текущей разварке в корпусе LQFP100 разварены только одиночные каналы АЦП Сигма-дельта.
В рукодстве представлена информация о возможности использования бескорпусного варианта К1921ВГ015 - в этом случае будут доступны каналы АЦП Сигма-дельта с дифференциальным режимом.
Для обсуждения возможности поставки бескорпусного исполнения или микросхемы с подключенными выводамидифференциального режима обратитесь в коммерческую службу.
Основные ключи компиляции:
CPU = -march=rv32imfc_zicsr -msmall-data-limit=8 -mstrict-align -mno-save-restore -Og -fmessage-length=0 -fsigned-char -fno-common -fno-builtin -flto -ggdb
FPU = -mabi=ilp32f
MCU = $(CPU) $(FPU)