Структура контроллера, карта памяти
Блок схема
Состав микроконтроллера
Системные устройства
- 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 | |||
Порт А | |||||
20 | GPIOA_0 | SPI0_MOSI | SPI1_MOSI | I_TIMER0_EXT |
|
21 | GPIOA_1 | SPI0_MISO | SPI1_MISO | I_TIMER1_EXT |
|
22 | GPIOA_2 | SPI0_SCK | SPI1_SCK | O_SLEEP |
|
23 | GPIOA_3 | SPI0_I_CS | SPI1_I_CS | SPI0_O_CS |
|
24 | GPIOA_4 | UART0_TX | UART1_TX | SPI1_O_CS |
|
25 | GPIOA_5 | UART0_RX | UART1_RX | «0» |
|
26 | GPIOA_6 | I2C_SCL | UART0_CTS | UART1_CTS |
|
27 | GPIOA_7 | I2C_SDA | UART0_RTS | UART1_RTS |
|
Порт В | |||||
44 | GPIOB_0>/H_S | SPI0_MOSI | SPI1_MOSI | I_TIMER0_EXT |
|
45 | GPIOB_1/RC_CLKOUT | SPI0_MISO | SPI1_MISO | I_TIMER2_EXT |
|
46 | GPIOB_2 | SPI0_SCK | SPI1_SCK | O_SLEEP | Во время обращения к внешним регистрам этот вывод работает как DATA_2 (направление определяется командой) |
47 | GPIOB_3 | SPI0_I_CS | SPI1_I_CS | SPI0_O_CS | Во время обращения к внешним регистрам этот вывод работает как DATA_3 (направление определяется командой) |
48 | GPIOB_4 | UART0_TX | UART1_TX | SPI1_O_CS | Во время обращения к внешним регистрам этот вывод работает как DATA_4 (направление определяется командой) |
1 | GPIOB_5 | UART0_RX | UART1_RX | «0» | Во время обращения к внешним регистрам этот вывод работает как DATA_5 (направление определяется командой) |
2 | GPIOB_6 | I2C_SCL | UART0_CTS | UART1_CTS | Во время обращения к внешним регистрам этот вывод работает как DATA_6 (направление определяется командой) |
3 | GPIOB_7 | I2C_SDA | UART0_RTS | UART1_RTS | Во время обращения к внешним регистрам этот вывод работает как DATA_7 (направление определяется командой) |
Порт С | |||||
9 | GPIOC_0/TCK | SPI0_MOSI | SPI1_MOSI | I_TIMER1_EXT |
|
10 | GPIOC_1/TMS | SPI0_MISO | SPI1_MISO | I_TIMER2_EXT |
|
11 | GPIOC_2/TDI | SPI0_SCK | SPI1_SCK | O_SLEEP |
|
12 | GPIOC_3/TDO | SPI0_I_CS | SPI1_I_CS | SPI0_O_CS |
|
13 | GPIOC_4 | UART0_TX | UART1_TX | SPI1_O_CS | Порт ввода-вывода микроконтроллера, разряд №4 группы C |
14 | GPIOC_5 | UART0_RX | UART1_RX | «0» | Порт ввода-вывода микроконтроллера, разряд №5 группы C |
15 | I2C_SCL | UART0_CTS | UART1_CTS | «0» | Во время обращения к внешним регистрам этот вывод работает как SEL_2 (выход) |
16 | GPIOC_7 | I2C_SDA | UART0_RTS | UART1_RTS | Во время обращения к внешним регистрам этот вывод работает как SEL_3 (выход) |
Порты JTAG (TCK, TDI, TMS, TDO) мультиплексированы с портами GPIOC. Выбор назначения выводов (GPIOC или JTAG) осуществляется выводом TM.
Порты интерфейсов (SPI, UART и т.д.) также мультиплексированы с портами GPIO. Выбор назначения выводов осуществляется с помощью альтернативных функций во время работы микроконтроллера.
Карта памяти
Адресное пространство памяти программ и данных разделено. В данное адресное пространство отображаются различные модули памяти и периферии.
№ | Выделенное пространство | Зона | Аббревиатура | Описание |
---|---|---|---|---|
0000h | 4 КБ | ПЗУ | ROM | ПЗУ |
0000h | 4352 Б | ОЗУ | RAM | ОЗУ |
2000h | 256 Б | PMM | Подсистема управления электропитанием | |
2100h | 256 Б | CMM | Подсистема управления тактированием | |
2200h | 256 Б | WDT | Сторожевой таймер | |
2300h | 256 Б | GPIOA | Универсальные порты ввода-вывода | |
2400h | 256 Б | GPIOB | ||
2500h | 256 Б | GPIOC | ||
2600h | 256 Б | SPI0 | Интерфейсы SPI | |
2700h | 256 Б | SPI1 | ||
2800h | 256 Б | UART0 | Интерфейсы UART | |
2900h | 256 Б | UART1 | ||
2A00h | 256 Б | I2C | Интерфейс I2C | |
2B00h | 256 Б | OWI | Интерфейс 1-WIRE | |
2C00h | 256 Б | WORK_FSM | Рабочий автомат | |
2D00h | 32 Б | TIMER0 | Таймеры | |
2D20h | 32 Б | TIMER1 | ||
2D40h | 32 Б | TIMER2 | ||
2F00h | 256 Б | ADC | Аналого-цифровой преобразователь | |
3000h | 256 Б | DAC | Цифро-аналоговый преобразователь | |
3100h | 256 Б | INT_CTRL | Контроллер прерываний | |
3200h | 64 Б | DEBUGGER | Отладчик | |
3300h | 8 Б | ANALOG_CFG | Конфигурационная память аналоговых блоков |
Если CPU обратится по адресу вне выделенного пространства, то при чтении будут приняты нулевые данные, запись не будет иметь никакого эффекта.
Распределение адресного пространства
Микроконтроллеры 8051 оперируют двумя типами памяти: памятью программ и памятью данных. Память программ и память данных физически и логически разделены, имеют различные механизмы адресации, работают под управлением различных сигналов и выполняют разные функции.
Обращение к внешней памяти данных осуществляется по команде «movx», а обращение к памяти программ по команде «movc».
Структура резидентной памяти данных представлена на рисунке. Первые 32 байта сгруппированы в 4 банка по 8 регистров R0 - R7. Команды микроконтроллера могут обращаться к ним как к регистрам общего назначения R0 - R7 и как к ячейкам ОЗУ с прямой адресацией от 00h до 1Fh. Ячейки резидентного ОЗУ с адреса 20h до адреса 2Fh обеспечивают кроме прямой адресации, адресацию 128 битов (0-127).
Резидентная память данных имеет 8-битную шину адреса, через которую обеспечивается доступ к памяти из регистра адреса – RAR или из регистра-указателя стека – SP. Регистр-указатель стека используется микроконтроллером при работе со стеком. Через регистр адреса осуществляется прямая и косвенная адресация памяти данных.