STC15W404AS относится к серии STC15W401AS семейства STC15 микроконтроллеров компании STC MCU Limited. Микроконтроллер имеет усовершенствованное ядро MSC51 (система команд и архитектура популярного некогда семейства микроконтроллеров Intel 8051). Это новое ядро, отличающееся высоким быстродействием (скорость работы в 8..12 раз быстрее традиционного ядра 8051 на той же тактовой частоте), широким рабочим диапазоном напряжений питания, низким энергопотреблением и устойчивостью к помехам. Код программы может быть защищен от несанкционированного доступа при перепрошивке с помощью специальной технологии шифрования STC. Поставляется в различных вариантах корпусов на 16, 20 и 28 выводов. STC15W404AS полностью совместим по системе команд с традиционным ядром 8051, и реализует его все аппаратные функции. Дополнительно в нем имеется два указателя DPTR вместо одного, порт UART можно использовать как 3 последовательных порта путем сдвига его данных на 3 группы выводов. Также имеется интерфейс SPI, и 8-канальный АЦП, которых нет в традиционных микроконтроллерах Intel 8051/8052/8751. Порты GPIO могут работать точно так же, как и оригинальные, и их также можно использовать в расширенных режимах (есть 4 режима работы: квази-двунаправленный со слабым pull-up, мощный двухтактный с усиленным pull-up, только вход с высоким сопротивлением и открытый сток). Каждый выход может коммутировать ток до 20 мА, однако общий коммутируемый ток не должен превышать 90 мА для 16-выводного корпуса. В таблице ниже сведены основные параметры микроконтроллера.
| Параметр | Описание |
| Рабочее напряжение | 2.4V..5V |
| Память программ (FLASH) | 4 килобайта, с поддержкой ISP/IAP (IAP расшифровывается как In-Application Programming, т. е. перепрограммирование в программе), количество перезаписей не менее 100 тысяч раз. |
| ОЗУ (SRAM) | 512 байт: 256 байт традиционное регистровое ОЗУ (scratch-pad RAM) и 256 байт расширенное ОЗУ (auxiliary RAM). |
| UART | 1 шт., его можно по выбору использовать на 3 группах выводов (P3.0/P3.1, или P3.6/P3.7 или P1.6/P1.7). |
| SPI | 1 шт. |
| Таймеры | 3 таймера разрядностью 16 бит T0, T1, T2 (T0 и T1 совместимы с традиционными Timer/Counter 0 и Timer/Counter 1 архитектуры 8051). |
| Захват и генерация сигнала | CCP, PCA, PWM: 3 канала, которые можно использовать как 3 таймера или 3 ЦАП. |
| Специальные режимы энергопотребления, таймер пробуждения | Есть |
| Стандартные внешние прерывания | 5 каналов: INT0, INT1, ~INT2, ~INT3, ~INT4. |
| АЦП | 8 каналов, 10 бит |
| Компаратор | Есть |
| EEPROM | 9 килобайт с поддержкой IAP (In-Application Programming), количество перезаписей не менее 100 тысяч раз. |
| Прерывание при детектировании низкого напряжения | Есть |
| Сторожевой таймер (WDT) | Есть |
| Внутренняя система сброса | Есть, порог напряжения сброса опционально настраивается. |
| Внутренний точный тактовый генератор | Есть |
| Выходные сигналы тактирования и сброса | Есть |
| Шифрование загружаемого кода | Есть |
| Управление по RS485 | Есть |
| Варианты корпусов | SOP28, TSSOP28, SKDIP28, QFN28, SOP20, DIP20, TSSOP20, SOP16, DIP16 |
Система шифрования кода. С применением ключа шифрования, прошитого в MCU, имеется возможность обновлять программное обеспечение с помощью кнопки update. Для этого в системе программирования выбираются опции "encryption" download и "release project", когда требуется обновить программное обеспечение микроконтроллера. Из-за того, что в памяти программ последние 7 байт используются для хранения глобального идентификатора (global ID), то пространство памяти FLASH, доступное для программы пользователя, уменьшается на эти 7 байт.
Система сброса. В микроконтроллер встроена очень удобная система сброса, так что можно полностью исключить внешние цепочки, формирующие сигнал RESET. По умолчанию вывод P5.4/RST/MCLKO используется как порт ввода/вывода (GPIO), но его можно переконфигурировать как ножку сброса RST с активным уровнем лог. 1, это делается программатором STC-ISP. Порог сброса можно запрограммировать по 16 различным уровням.
Тактирование. В кристалл встроен точный R/C генератор (точность установки частоты ±0.3%). Уход частоты в зависимости от температуры в диапазоне -40..+80°C составляет 1%, в диапазоне -20..+65°C составляет 0.6%. Это позволяет отказаться от подключения дорогого внешнего кварцевого резонатора. Тактовая частота может быть установлена в диапазоне 5..35 МГц (предпочтительные частоты 5.5296, 11.0592, 22.1184, 33.1776 МГц).
Цоколёвка и назначение выводов микроконтроллера для 28-выводного корпуса показана в таблице ниже.
| № | Мнемоника | Описание/функция | |
| 1 | P2.6 | Порт ввода/вывода (GPIO). | |
| 2 | P2.7 | ||
| 3 | P1.0 | ||
| 4 | P1.1 | ||
| 5 | P1.2/SS/CMPO | P1.2 | Порт ввода/вывода (GPIO). |
| SS | Slave Selection, сигнал выборки подчиненного устройства интерфейса SPI. | ||
| CMPO | Выходной порт результата сравнения компаратора. | ||
| 6 | P1.3/MOSI | P1.3 | Порт ввода/вывода (GPIO). |
| MOSI | Master Output Slave Input, сигнал данных интерфейса SPI. | ||
| 7 | P1.4/MISO | P1.4 | Порт ввода/вывода (GPIO). |
| MISO | Master Input Slave Output, сигнал данных интерфейса SPI. | ||
| 8 | P1.5/SCLK | P1.5 | Порт ввода/вывода (GPIO). |
| SCLK | Тактовый сигнал интерфейса SPI. | ||
| 9 | P1.6/RXD_3/MCLKO_2 | P1.6 | Порт ввода/вывода (GPIO). |
| RXD_3 | Вход данных UART1 | ||
| MCLKO_3 | Выход инвертирующего усилителя внутренней схемы тактирования. Когда используется внешний генератор тактов, этот вывод должен оставаться не подключенным. | ||
| 10 | P1.7/TXD_3 | P1.7 | Порт ввода/вывода (GPIO). |
| TXD_3 | Выход данных UART1. | ||
| 11 | P5.4/RST/MCLKO/CMP- | P5.4 | Порт ввода/вывода (GPIO). |
| RST | Вход для сигнала сброса. Уровень лог. 1 на этом выводе длительностью не менее 2 машинных такта приводит к сбросу устройства. | ||
| MCLKO | Master clock output, главный выход тактов. Выходная частота может быть равна MCLK, MCLK/2 и MCLK/4. Эта частота может вырабатываться от внутреннего R/C генератора, или от внешнего генератора, или с помощью использования внешнего кварцевого резонатора. | ||
| CMP- | Инверсный вход компаратора. | ||
| 12 | VCC | Плюс напряжения питания. | |
| 13 | P5.5/CMP+ | P5.5 | Порт ввода/вывода (GPIO). |
| CMP+ | Прямой (без инверсии) вход компаратора. | ||
| 14 | GND | Минус напряжения питания, общий провод. | |
| 15 | P3.0/RXD/~INT4/T2CLKO | P3.0 | Порт ввода/вывода (GPIO). |
| RXD | Вход данных UART1. | ||
| ~INT4 | Внешнее прервание 4, которое может сработать только по спаду логического уровня (от лог. 1 к лог. 0). Этот сигнал поддерживает функцию пробуждения из режима пониженного энергопотребления/выключения (power-down wake-up). | ||
| T2CLKO | T2 Clock Output, выход тактов T2. Эта ножка может быть сконфигурирована для вывода тактовой частоты путем установки бита INT_CLKO[2] /T2CLKO. | ||
| 16 | P3.1/TXD/T2 | P3.1 | Порт ввода/вывода (GPIO). |
| TXD | Выход данных UART1. | ||
| T2 | Внешний вход тактов для Timer/Counter 2. | ||
| 17 | P3.2/INT0 | P3.2 | Порт ввода/вывода (GPIO). |
| INT0 | Внешнее прервание 0, которое может сработать как по нарастанию, так и по спаду уровня, что определяется настройкой бита IT0 (TCON.0). | ||
| 18 | P3.3/INT1 | P3.3 | Порт ввода/вывода (GPIO). |
| INT1 | Внешнее прервание 1, которое может сработать как по нарастанию, так и по спаду уровня, что определяется настройкой бита IT1 (TCON.2). INT1 поддерживает функцию пробуждения из режима пониженного энергопотребления/выключения (power-down wake-up). | ||
| 19 | P3.4/T0/T1CLKO | P3.4 | Порт ввода/вывода (GPIO). |
| T0 | Внешний вход тактов для Timer/Counter 0. | ||
| T1CLKO | T1 Clock Output, выход тактов T1. Эта ножка может быть сконфигурирована для вывода тактовой частоты путем установки бита INT_CLKO[1] /T1CLKO. | ||
| 20 | P3.5/T1/T0CLKO | P3.5 | Порт ввода/вывода (GPIO). |
| T1 | Внешний вход тактов для Timer/Counter 1. | ||
| T0CLKO | T0 Clock Output, выход тактов T0. Эта ножка может быть сконфигурирована для вывода тактовой частоты путем установки бита INT_CLKO[0] /T0CLKO. | ||
| 21 | P3.6/~INT2/RXD_2 | P3.6 | Порт ввода/вывода (GPIO). |
| ~INT2 | Внешнее прерывание 2, которое может срабатывать только по спаду уровня (при переходе от лог. 1 к лог. 0). ~INT2 поддерживает функцию пробуждения из режима пониженного энергопотребления/выключения (power-down wake-up). | ||
| RXD_2 | Вход данных UART1. | ||
| 22 | P3.7/~INT3/TXD_2 | P3.7 | Порт ввода/вывода (GPIO). |
| ~INT3 | Внешнее прерывание 2, которое может срабатывать только по спаду уровня (при переходе от лог. 1 к лог. 0). ~INT3 поддерживает функцию пробуждения из режима пониженного энергопотребления/выключения (power-down wake-up). | ||
| TXD_2 | Выход данных UART1. | ||
| 23 | P2.0/RSTOUT_LOW | P2.0 | Порт ввода/вывода (GPIO). |
| RSTOUT_LOW | Выход, который аппаратно генерирует лог. 0 после включения питания и во время сброса, и его можно программно установить в лог. 1. | ||
| 24 | P2.1/SCLK_2 | P2.1 | Порт ввода/вывода (GPIO). |
| SCLK_2 | Сигнал тактов интерфейса SPI. | ||
| 25 | P2.2/MISO_2 | P2.2 | Порт ввода/вывода (GPIO). |
| MISO_2 | Master Input Slave Output, сигнал данных интерфейса SPI. | ||
| 26 | P2.3/MOSI_2 | P2.3 | Порт ввода/вывода (GPIO). |
| MOSI_2 | Master Output Slave Input, сигнал данных интерфейса SPI. | ||
| 27 | P2.4/SS_2 | P2.4 | Порт ввода/вывода (GPIO). |
| SS_2 | Slave Selection, сигнал выборки подчиненного устройства интерфейса SPI. | ||
| 28 | P2.5 | P2.5 | Порт ввода/вывода (GPIO). |
Таблица выбора микроконтроллеров из серии STC15W408AS (STC15W401AS, STC15W402AS, STC15W404AS, STC15W408AS, IAP15W413AS, IRC15W415AS):
| Параметр | 401AS | 402AS | 404AS | 408AS | 413AS | 415AS |
| Рабочее напряжение 2.4V..5V | + | + | + | + | + | + |
| Память программ FLASH, байт | 1k | 2k | 4k | 8k | 13k | 15.5k |
| Память EEPROM, байт | 5k | 5k | 9k | 5k | IAP | |
| SRAM, байт | 512 | |||||
| UART | 1 шт., с возможностью пробуждения MCU | |||||
| SPI | Есть | |||||
| Таймеры/счетчики | T0, T2 | |||||
| Поддержка RS485 | + | + | + | + | + | + |
| Компаратор | + | + | + | + | + | + |
| Аппаратура CCP, PWM, PCA | 3 канала, с возможностью пробуждения MCU | |||||
| Поддержка RTC | Есть | |||||
| Внутренний высокоточный генератор | + | + | + | + | + | + |
| АЦП | 10 бит | |||||
| Сторожевой таймер (WDT) | + | + | + | + | + | + |
| Поддержка DPTR | + | + | + | + | + | + |
| Детектор низкого напряжения питания | Есть, с генерацией прерывания | |||||
| Источники внутреннего надежного сброса | 8, по уровню | |||||
| Поддержка внешнего прерывания при подаче питания | Более 5V | |||||
| Варианты корпусов | SKDIP28, SOP28, TSSOP28, QFN28, PDIP20, SOP20, TSSOP20, PDIP16, SOP16 | |||||
Можно использовать компилятор Keil C или любой другой компилятор, рассчитанный на семейство MCS-51. Также можно использовать бесплатный инструментарий SDCC
ПРОШИВКА
Программа может быть загружена с помощью порта UART через ножки GPIO P3.0 и P3.1. Для этого нужен простой переходник USB-TTL который можно купить на aliexpress (google запрос stc-isp programmer site:aliexpress.com). Также можно купить специальный программатор STC-ISP40PIN, U8 или U8-mini Но можно ничего не покупать, для перепрошивки достаточно иметь любой переходник USB-TTL-UART. Итак, процесс перепрошивки по шагам.
1. Вбейте ключевые слова для поиска 6, откройте страничку загрузки на сайте STC, и выберите там последнюю версию утилиты программирования (я скачал stc-isp6.85.rar). На иероглифы не обращайте внимания. Распакуйте из-архива exe-файл, запустите.
2. Из выпадающего списка MCU Type выберите тип Вашего микроконтроллера. Этот список представляет собой дерево, в котором на верхнем уровне перечислены не сами типы микроконтроллеров, а их серии (разделы, список которых можно дополнительно развернуть). Например, чтобы выбрать микроконтроллер STC15W1K24S, нужно сначала в списке выбрать раздел STC15W1K16S Series, и уже в этом разделе выбрать микроконтроллер STC15W1K24S.
3. Подключите через USB Ваш переходник USB-TTL-UART (я использовал дешевый USB-SERIAL CH340), выберите его по номеру COM-порта в выпадающем списке COM Port.
4. Отключите питание от платы, где установлен прошиваемый Вами микроконтроллер STC (микроконтроллер STC должен быть обесточен). Соедините провода GND, TXD и RXD переходника соответственно с ножками GND, P3.0, P3.1 микроконтроллера.
5. Теперь проверьте, работает ли соединение с программируемым микроконтроллером, следующим образом: нажмите кнопку Check MCU, после чего подайте питание на программируемый микроконтроллер STC. В результате этой операции в консоль утилиты stc-isp будет выдано текст наподобие следующего (это пример проверки STC15W1K24S):
Checking target MCU ... MCU type: STC15W1K24S F/W version: 7.2.5T
Current H/W Option: . Current system clock source is internal IRC oscillator . IRC frequency: 18.443MHz . Wakeup Timer frequency: 36.727KHz . Do not detect the level of P3.2 and P3.3 next download . Power-on reset, use the extra power-on delay . RESET pin behaves as I/O pin . Reset while detect a Low-Voltage . Thresh voltage level of the built-in LVD : 2.62 V . Inhibit EEPROM operation under Low-Voltage . CPU-Core supply level : 2.81 V . Hardware do not enable Watch-Dog-Timer . Watch-Dog-Timer pre-scalar : 256 . Watch-Dog-Timer stop count in idle mode . Program can modify the Watch-Dog-Timer scalar . Do not erase user EEPROM area at next download . Do not control 485 at next download . Do not check user password next download . TXD is independent IO . TXD pin as quasi-bidirectional mode after reset . P2.0 output HIGH level after reset
. MCU type: STC15W1K24S
F/W version: 7.2.5T
Complete !(2017-03-11 15:53:59)
Если увидели этот текст, значит программирование работает, и Вы можете прошить в микроконтроллер свою программу. Если же нет, то где-то в подключении допустили ошибку, проверяйте все соединения.
- Технические характеристики, внешний вид и комплектация товара могут быть изменены производителем без предварительного уведомления.

