Skip to main content

Структура контроллера, карта памяти

Блок схема

Блок схема 5400ТР105-003
Блок схема 5400ТР105-003

Состав микроконтроллера

Системные устройства

  • CPU_8051 – процессорное ядро;
  • TAP (Test Access Port) – автомат JTAG;
  • TDR (Test Data Register) – регистры данных JTAG;
  • MUX - мультиплексор;
  • ANALOG_CFG_MEM - конфигурационная память;
  • ROM_OTP_4KB (One-Time Programmable) - однократно программируемое постоянное запоминающее устройство емкостью 4 КБ, память программ устройства;
  • RAM_ROM_4KB - оперативное запоминающее устройство емкостью 4 КБ, микроконтроллер работает с данным модулем, как с памятью программ или памятью данных в зависимости 
    от значения вывода DBG;
  • RAM_256B - оперативное запоминающее устройство емкостью 256B, для хранения промежуточных данных, память данных устройства;
  • SWITCH - модуль, разграничивающий доступ к RAM_OTP_4KB, RAM_ROM_4KB, RAM_256B;
  • SWITCH JTAG/CPU - модуль, разграничивающий доступ к шине для JTAG и CPU;
  • POR (Power-On Reset) - модуль сброса при включении;
  • BOR (Brown-Out Reset) - модуль сброса при снижении напряжения питания;
  • PMM (Power Management Module) - модуль системы управления сбросом и питанием;
  • GEN_PLL - модуль ввода-вывода и фазовой автоподстройки частоты (ФАПЧ) тактирования;
  • RC - RC-генератор;
  • CMM (Clock Management Module) - модуль управления источниками тактовых сигналов системы;
  • DEBUGGER - отладчик;
  • OA_TUNE - масштабирующий операционный усилитель (МОУ);
  • V_REF - источник опорного напряжения (ИОН);
  • LDO_5V->3V7, LDO_5V->1V8 - линейные регуляторы напряжения.

Периферийные устройства

  • INT_CTRL - контроллер прерываний;
  • SPI0, SPI1 - модули SPI;
  • UART0, UART1 - модули UART;
  • I2C - модуль I2C;
  • GPIOA, GPIOB, GPIOC - контроллеры портов ввода-вывода;
  • TIMER0, TIMER1, TIMER2 - универсальные таймеры;
  • WDT - сторожевой таймер;
  • WORK_FSM - рабочий автомат для режима «SLEEP»;
  • OWI - модуль 1-Wire;
  • DAC - цифро-аналоговый преобразователь.
  • ADC - аналого-цифрой преобразователь;

Альтернативные функции выводов GPIO

ВыводАльтернативная функцияПяснение
АФ1АФ2АФ3
Порт А
20GPIOA_0SPI0_MOSISPI1_MOSII_TIMER0_EXT
  • SPI0/1 – MOSI (направление определяется режимом работы «ведущий»/«ведомый»)
  • TIMER0 – I_TIMER0_EXT (вход)
21GPIOA_1SPI0_MISOSPI1_MISOI_TIMER1_EXT
  • SPI0/1 – MISO (направление определяется режимом работы «ведущий»/«ведомый»);
  • TIMER1 – I_TIMER1_EXT (вход).
22GPIOA_2SPI0_SCKSPI1_SCKO_SLEEP
  • SPI0/1 – SCK (направление определяется режимом работы «ведущий»/«ведомый»);
  • режим «Глубокий сон» – O_SLEEP (выход).
23GPIOA_3SPI0_I_CSSPI1_I_CSSPI0_O_CS
  • SPI0/1 – I_CS (вход);
  • SPI0 – O_CS (выход).
24GPIOA_4UART0_TXUART1_TXSPI1_O_CS
  • UART0/1 – TX (выход);
  • SPI1 – O_CS (выход).
25GPIOA_5UART0_RXUART1_RX«0»
  • UART0/1 – RX (вход);
  • лог. «0» (выход).
26GPIOA_6I2C_SCLUART0_CTSUART1_CTS
  • I2C – SCL (направление определяется режимом работы «ведущий»/«ведомый»);
  • UART0/1 – CTS (вход).
27GPIOA_7I2C_SDAUART0_RTSUART1_RTS
  • I2C – SDA (направление определяется протоколом);
  • UART0/1 – RTS (выход).
Порт В
44GPIOB_0>/H_SSPI0_MOSISPI1_MOSII_TIMER0_EXT
  • при TM = 1 вывод принудительно работает как H/S (вход)
  • во время обращения к внешним регистрам этот вывод работает как DATA_0 (направление определяется командой)
45GPIOB_1/RC_CLKOUTSPI0_MISOSPI1_MISOI_TIMER2_EXT
  • при TM = 1 вывод принудительно работает как RC_CLKOUT (выход);
  • во время обращения к внешним регистрам этот вывод работает как DATA_1 (направление определяется командой)
46GPIOB_2SPI0_SCKSPI1_SCKO_SLEEP

Во время обращения к внешним регистрам этот вывод работает как DATA_2 (направление определяется командой)

47GPIOB_3SPI0_I_CSSPI1_I_CSSPI0_O_CS

Во время обращения к внешним регистрам этот вывод работает как DATA_3 (направление определяется командой)

48GPIOB_4UART0_TXUART1_TXSPI1_O_CS

Во время обращения к внешним регистрам этот вывод работает как DATA_4 (направление определяется командой)

1GPIOB_5UART0_RXUART1_RX«0»

Во время обращения к внешним регистрам этот вывод работает как DATA_5 (направление определяется командой)

2GPIOB_6I2C_SCLUART0_CTSUART1_CTS

Во время обращения к внешним регистрам этот вывод работает как DATA_6 (направление определяется командой)

3GPIOB_7I2C_SDAUART0_RTSUART1_RTS

Во время обращения к внешним регистрам этот вывод работает как DATA_7 (направление определяется командой)

Порт С
9GPIOC_0/TCKSPI0_MOSISPI1_MOSII_TIMER1_EXT
  • При TM = 1 вывод принудительно работает как TCK (вход) интерфейса JTAG
  • Во время обращения к внешним регистрам этот вывод работает как WR/RD (выход)
10GPIOC_1/TMSSPI0_MISOSPI1_MISOI_TIMER2_EXT
  • При TM = 1 вывод принудительно работает как TMS (вход) интерфейса JTAG
  • Во время обращения к внешним регистрам этот вывод работает как EN (выход)
11GPIOC_2/TDISPI0_SCKSPI1_SCKO_SLEEP
  • При TM = 1 вывод принудительно работает как TDI (вход) интерфейса JTAG
  • Во время обращения к внешним регистрам этот вывод работает как SEL_0 (выход)
12GPIOC_3/TDOSPI0_I_CSSPI1_I_CSSPI0_O_CS
  • При TM = 1 вывод принудительно работает как TDO (выход) интерфейса JTAG
  • Во время обращения к внешним регистрам этот вывод работает как SEL_1 (выход)
13GPIOC_4UART0_TXUART1_TXSPI1_O_CS

Порт ввода-вывода микроконтроллера, разряд №4 группы C

14GPIOC_5UART0_RXUART1_RX«0»

Порт ввода-вывода микроконтроллера, разряд №5 группы C

15I2C_SCLUART0_CTSUART1_CTS«0»

Во время обращения к внешним регистрам этот вывод работает как SEL_2 (выход)

16GPIOC_7I2C_SDAUART0_RTSUART1_RTS

Во время обращения к внешним регистрам этот вывод работает как SEL_3 (выход)

Порты JTAG (TCK, TDI, TMS, TDO) мультиплексированы с портами GPIOC. Выбор назначения выводов (GPIOC или JTAG) осуществляется выводом TM.

Порты интерфейсов (SPI, UART и т.д.) также мультиплексированы с портами GPIO. Выбор назначения выводов осуществляется с помощью альтернативных функций во время работы микроконтроллера.

Карта памяти

Адресное пространство памяти программ и данных разделено. В данное адресное пространство отображаются различные модули памяти и периферии.

Выделенное пространствоЗонаАббревиатураОписание
0000h4 КБПЗУROMПЗУ
0000h4352 БОЗУRAMОЗУ
2000h256 БPMMПодсистема управления электропитанием
2100h256 БCMMПодсистема управления тактированием
2200h256 БWDTСторожевой таймер
2300h256 БGPIOA Универсальные порты ввода-вывода
2400h256 БGPIOB
2500h256 БGPIOC
2600h256 БSPI0Интерфейсы SPI
2700h256 БSPI1
2800h256 БUART0Интерфейсы UART
2900h256 БUART1
2A00h256 БI2CИнтерфейс I2C
2B00h256 БOWIИнтерфейс 1-WIRE
2C00h256 БWORK_FSMРабочий автомат
2D00h32 БTIMER0Таймеры
2D20h32 БTIMER1
2D40h32 БTIMER2
2F00h256 БADCАналого-цифровой преобразователь
3000h256 БDACЦифро-аналоговый преобразователь
3100h256 БINT_CTRLКонтроллер прерываний
3200h64 БDEBUGGERОтладчик
3300h8 БANALOG_CFGКонфигурационная память аналоговых блоков

Если CPU обратится по адресу вне выделенного пространства, то при чтении будут приняты нулевые данные, запись не будет иметь никакого эффекта.

Распределение адресного пространства

Микроконтроллеры 8051 оперируют двумя типами памяти: памятью программ и памятью данных. Память программ и память данных физически и логически разделены, имеют различные механизмы адресации, работают под управлением различных сигналов и выполняют разные функции.

Структура памяти микроконтроллера в режиме «HARD»
Структура памяти микроконтроллера в режиме «HARD»
Структура памяти микроконтроллера в режиме «SOFT»
Структура памяти микроконтроллера в режиме «SOFT»

Обращение к внешней памяти данных осуществляется по команде «movx», а обращение к памяти программ по команде «movc».

Структура резидентной памяти данных представлена на рисунке. Первые 32 байта сгруппированы в 4 банка по 8 регистров R0 - R7. Команды микроконтроллера могут обращаться к ним как к регистрам общего назначения R0 - R7 и как к ячейкам ОЗУ с прямой адресацией от 00h до 1Fh. Ячейки резидентного ОЗУ с адреса 20h до адреса 2Fh обеспечивают кроме прямой адресации, адресацию 128 битов (0-127).

Структура резидентной памяти данных
Структура резидентной памяти данных

Резидентная память данных имеет 8-битную шину адреса, через которую обеспечивается доступ к памяти из регистра адреса – RAR или из регистра-указателя стека – SP. Регистр-указатель стека используется микроконтроллером при работе со стеком. Через регистр адреса осуществляется прямая и косвенная адресация памяти данных.