|
Информационный портал технической поддержки Центра проектирования интегральных микросхем |
| Обозначение вывода программатора | Номер вывода микроконтроллера |
| TMS | 1 |
| TCK | 2 |
| TDI | 3 |
| GND | 4 |
| TDO | 7 |
| VDD | 8 |
| Обозначение вывода программатора | Номер вывода микроконтроллера |
| TDI | 3 |
| VDD | 5 |
| TCK | 6 |
| TMS | 7 |
| TDO | 8 |
| GND | 9 |


Основные отличия относительно MDR1206FI, на которые стоит обратить внимание:
Загрузочная программа для микросхем MDR1206(A)FI к микросхемам MDR1215LGI и MDR1219LGI не применима. Для этих микросхем необходимо использовать отдельную загрузочную программу.
В загрузочной программе для микроконтроллера MDR1215LGI, некоторые выводы GPIO, не выведенные в корпусе, настраиваются как технологические. Перенастраивать данные технологические выводы GPIO нельзя, что необходимо предусмотреть в основном ПО. В качестве технологического вывода выступает, например, PD11, настраиваемый как цифровой выход в функции MODE=00 с состоянием высокого уровня.
Важно: следует использовать только те выводы, которые разведены в данном корпусе: для MDR1215LGI это PA[9:6], PD5, PD7, для MDR1219LGI это PA0, PA3, PA[11:5]. Неиспользуемые в микросхеме MDR1215LGI выводы GPIO должны маскироваться, а настройку других портов производить не допускается. Например, вывод PD12 микросхемы MDR1215LGI подключен к питанию, вывод PC3 подключен к земле, и их настройка на выход может привести к выходу микросхемы из строя. Помимо этого, разварка кристалла может изменяться (без изменения доступного функционала) для повышения надежности.
Ограничение на использование только разведенных в корпусе выводов применимо и для специальных выводов, таких как SW (настройка данного функционал в BKP не приведет к выводу микросхемы из строя, но не имеет смысла. Помимо этого, значения WAKEUP3-WAKEUP1 всегда равны 0).
Вывод nRESET доопределен до высокого уровня внутри корпуса. Из-за крайне ограниченного количества выводов GPIO в загрузочной программе отсутствует выбор режима загрузки. При запуске загрузочная программа после необходимых настроек передает управление в основную Flash-память. То есть записываемое программное обеспечение начинает работу сразу при подаче питания и, если каким-то образом нарушается доступ по JTAG (например, переопределение функций выводов GPIO, совмещенных с JTAG, или неправильно настроенное тактирование (см. [i] МК не определяется по интерфейсу JTAG/SWD. Восстановление работы МК), то восстановить доступ к JTAG будет или крайне затруднительно, или невозможно. Поэтому для предосторожности в основной программе нужно первыми инструкциями ввести задержку и внимательно настраивать выводы GPIO.
Выводы PA3, PA5, PA7 и SAR_AIN1 в микроконтроллере MDR1219LGI объединены внутри корпуса. Это накладывает ограничение на их использование. Если один из выводов PA3, PA5, PA7 настроен как выход, остальные два обязательно должны работать в режиме входа. Использование двух и более из этих выводов одновременно в режиме выхода может привести к короткому замыканию и выходу микросхемы из строя, например, если на один вывод подана логическая единица, а на другой – логический ноль. Также при настройке любого из этих выводов на выход измеряемое АЦП напряжение будет определяться уровнем, формируемым данным выводом GPIO.
/* Includes ------------------------------------------------------------------*/
#include "MDR32VF0xI_config.h"
#include "MDR32VF0xI_rst_clk.h"
#include "MDR32VF0xI_port.h"
/* Private define ------------------------------------------------------------*/
#define GPIO_PORT MDR_PORTD
#define GPIO_PORT_CLK RST_CLK_PCLK_PORTD
#define GPIO_PIN_1 PORT_PIN_5
#define GPIO_PIN_2 PORT_PIN_7
/* Private variables ---------------------------------------------------------*/
PORT_InitTypeDef PORT_InitStructure;
void Delay(uint32_t Ticks) {
for (uint32_t i = 0; i < Ticks; i++) { __NOP(); }
}
int main(void)
{
RST_CLK_DeInit();
for (uint32_t i = 0; i < 100000; i++) {}
RST_CLK_HCLK_ClkSelection(RST_CLK_CPU_HCLK_CLK_SRC_HSI);
RST_CLK_PCLKCmd(GPIO_PORT_CLK, ENABLE);
PORT_StructInit(&PORT_InitStructure);
PORT_InitStructure.PORT_Pin = (GPIO_PIN_1 | GPIO_PIN_2);
PORT_InitStructure.PORT_Direction = PORT_DIRECTION_OUTPUT;
PORT_InitStructure.PORT_Function = PORT_FUNCTION_PORT;
PORT_InitStructure.PORT_Mode = PORT_MODE_DIGITAL;
PORT_InitStructure.PORT_Power = PORT_POWER_NOMINAL_UPTO_2mA;
PORT_Init(GPIO_PORT, &PORT_InitStructure);
PORT_SetBits(GPIO_PORT, (GPIO_PIN_1 | GPIO_PIN_2));
while (1) {
Delay(100);
PORT_ToggleBit(GPIO_PORT, (GPIO_PIN_1 | GPIO_PIN_2));
}
} 
/* Includes ------------------------------------------------------------------*/
#include "MDR32VF0xI_config.h"
#include "MDR32VF0xI_rst_clk.h"
#include "MDR32VF0xI_port.h"
/* Private define ------------------------------------------------------------*/
#define GPIO_PORT MDR_PORTA
#define GPIO_PORT_CLK RST_CLK_PCLK_PORTA
#define GPIO_PIN_1 PORT_PIN_10
#define GPIO_PIN_2 PORT_PIN_11
/* Private variables ---------------------------------------------------------*/
PORT_InitTypeDef PORT_InitStructure;
void Delay(uint32_t Ticks) {
for (uint32_t i = 0; i < Ticks; i++) { __NOP(); }
}
int main(void) {
RST_CLK_DeInit();
for (uint32_t i = 0; i < 100000; i++) {}
RST_CLK_HCLK_ClkSelection(RST_CLK_CPU_HCLK_CLK_SRC_HSI);
RST_CLK_PCLKCmd(GPIO_PORT_CLK, ENABLE);
PORT_StructInit(&PORT_InitStructure);
PORT_InitStructure.PORT_Pin = (GPIO_PIN_1 | GPIO_PIN_2);
PORT_InitStructure.PORT_Direction = PORT_DIRECTION_OUTPUT;
PORT_InitStructure.PORT_Function = PORT_FUNCTION_PORT;
PORT_InitStructure.PORT_Mode = PORT_MODE_DIGITAL;
PORT_InitStructure.PORT_Power = PORT_POWER_NOMINAL_UPTO_2mA;
PORT_Init(GPIO_PORT, &PORT_InitStructure);
PORT_SetBits(GPIO_PORT, (GPIO_PIN_1 | GPIO_PIN_2));
while (1) {
Delay(100);
PORT_ToggleBit(GPIO_PORT, (GPIO_PIN_1 | GPIO_PIN_2));
}
} При разрешенной работе порта JTAG количество доступных для использования выводов GPIO у микросхем MDR1215LGI ограничено двумя выводами, а у MDR1219LGI - тремя. Отключение JTAG позволяет освободить еще 4 вывода. Аппаратное отключение JTAG осуществляется с помощью сброса в 0 бита JTAG_ON в регистре BKP_LDO батарейного домена. Для записи в данный бит предварительно необходимо разрешить тактирование блока BKP в регистре PER2_CLOCK контроллера тактовой частоты и записать ключ 0x8555AAA1 в регистр BKP_WPR батарейного домена. После отключения JTAG выводы, совмещенные с JTAG, можно настраивать в требуемую функцию.
Но важно понимать, что отключение JTAG программой, исполняемой из Flash-памяти, может привести к полной потере возможности подключения отладчика в дальнейшем. Поэтому перед отключением JTAG для возможности подключения к микроконтроллеру отладчиком в начале основной программы необходимо выставить задержку (например, 1 секунду), чтобы был временной промежуток между подачей питания и отключением JTAG.
| Сайт: | https://support.milandr.ru |
| E-mail: | support@milandr.ru |
| Телефон: | +7 495 221-13-55 |