======1986ВЕ9х - Серия микроконтроллеров на ядре ARM Cortex-M3====== 1986ВЕ9х - это серия 32-разрядных микроконтроллеров построенных на ядре ARM Cortex-M3, содержащих 128 КБ памяти программ Flash-типа и 32 КБ ОЗУ. Семейство состоит из следующих микросхем: * **1986ВЕ91Т**, **1986ВЕ94Т** - 132-х выводной металлокерамический корпус. * **1986ВЕ92У** - 64-х выводной металлокерамический и пластиковый корпус. * **1986ВЕ93У** - 48-х выводной металлокерамический корпус. Микроконтроллеры 1986ВЕ91, 1986ВЕ92, 1986ВЕ93 разработаны на основе одного кристалла. В зависимости от корпуса часть ножек не разведена, но они имеются на кристалле и тактируются, если не задано иное с помощью регистра PER_CLOCK, тем самым увеличивая потребление кристалла. Микроконтроллер 1986ВЕ94 разработан на основе отличного кристалла, но также на базе ядра CORTEX M3 [[DOC:MK:1986BE9x:faq|Вопросы]] - часто задаваемые вопросы пользователей.\\ [[DOC:MK:1986BE9x:faqADC|Вопросы по АЦП]] - вопросы по работе с АЦП. =====Внешняя шина только 32-битная! (кроме 1986ВЕ94)===== Микросхемы 1986ВЕ91, 1986ВЕ92, 1986ВЕ93 - это один и тот же кристалл, запакованный в корпуса с разным количеством выводов. Внешняя шина в этом кристалле только 32-битная и предназначена для исполнения кода с внешней памяти. Об этом говорит режим загрузки выставляемый внешними выводами MODE = 010 //(с Jtag)// или 011 //(Jtag заблокирован)//. Но такое исполнение возможно только в 1986ВЕ91, поскольку в ВЕ92 и ВЕ93 не все сигналы внешней шины выходят на внешние выводы. При работе шины адреса обращений должны быть кратны по 4, т.к. работа идет с 32-битными данными. При адресации не кратной 4-м данные возвращаются не там, где они ожидаются. Например, на форуме представлен пример байтного обращения по шине ([[http://forum.milandr.ru/viewtopic.php?f=33&t=299&start=180|ссылка]]) #define HWREG(x) (*((volatile uint32_t *)(x))) uint32_t arr32[4]; for (i = 0; i < 4; ++i) { arr32[i] = HWREG(EXTBUS_START_ADDR + i); } При этом считывание возвращает такие значения: arr32[0] = 0xFFFFFFdd; arr32[1] = 0xddFFFFFF; arr32[2] = 0xFFddFFFF; arr32[3] = 0xFFFFddFF; где dd - это байт, что выставлен на шине данных. Чтобы как-то получить байтный доступ к внешним данным, необходимо вывод внешней памяти a[0] подключить к выводу шины A[2]. Поскольку обращения на шине используются 32-битные, то сигнал A[2] будет меняться на каждый адрес. A[0] и A[1] в данном случае не используются. При таком подключении внешний байт данных будет лежать в младшем байте считываемого слова. (см. [[prog:extbus:extbus_rr1_ve1|"Картинка из статьи Работа с Flash памятью 1636РР1У по внешней шине 1986ВЕ91Т"]]) В микроконтроллере **1986ВЕ94** используется доработанная шина, она может работать как с **8-битными**, так и с **16-битными данными**.