HC32, "убийца" STM ;) |
Здравствуйте, гость ( Вход | Регистрация )
HC32, "убийца" STM ;) |
11.3.2019, 16:03
Сообщение
#1
|
|
посіпака Хунти Группа: Мод Сообщений: 20016 Регистрация: 21.11.2009 Из: Vinnitsa Пользователь №: 11 |
Однако. Микрософтовский переводчик тоже неплох. В смысле правдоподобности. Но кушает за раз только 10000 символов (гуголь - 5000). Бесит.
В течение получаса-часа получается какая-то вот такая фигня (ещё не вычитано, в процессе). (Злобный оффтоп вдогонку). HC32F003 - один в один по распиновке с STM8S003, и стоит те же 25 центов. Но - Cortex-M0+. В продолжение оффтопа. HC32L130 благополучно прошился и... свалился в HardFault. Ура, что ли. Пора курить матчасть, User Manual перевести бы... там 820 страничек всего-то. В продолжение оффтопа. HC32L130 благополучно прошился и... свалился в HardFault. Вытащил. Забыл, что у него флэш с нуля начинается, а не как у STM32 - послал по несуществующему адресу (просто для справки: оттуда читаются сплошные 0xAA). Таблица параметров записалась. Порты, UART и SPI как бы проинициализировались, на очереди таймеры... блд. Влетает по прерыванию в дефолтный обработчик (бесконечный цикл). Утро вечера мудренее...
Прикрепленные файлы
|
|
|
12.3.2019, 9:09
Сообщение
#2
|
|
посіпака Хунти Группа: Мод Сообщений: 20016 Регистрация: 21.11.2009 Из: Vinnitsa Пользователь №: 11 |
Сюда перенесу весь оффтоп по теме из др. мест.
|
|
|
12.3.2019, 12:26
Сообщение
#3
|
|
Активный участник Группа: Пользователи Сообщений: 10937 Регистрация: 19.4.2011 Пользователь №: 345 |
Ссылку на datasheet не на кітайскай мове - сюды!
Наконт "забойцы STM" не згодны. Што гэтыя цэнты лічыць, калі яго ўклад у канчатковую цану выраба дае лічаныя працэнты. |
|
|
15.3.2019, 7:09
Сообщение
#4
|
|
посіпака Хунти Группа: Мод Сообщений: 20016 Регистрация: 21.11.2009 Из: Vinnitsa Пользователь №: 11 |
<Записки лаборанта>
Завёл-таки HC32L130 в связке с RFM69, 4 дня ушло (чистых). Некоторые впечатления. Ввиду того, что юзер-мануал пока не переведён, понадеялся на авось, т.е. на библиотеки. Из последней версии SDK. GPIO: вопросов нет. Всё практически как у STM32L. SPI: Spi_SendData и Spi_ReceiveData из библиотеки ведут себя, опустив подробности, странновато. Пришлось левой ногой написать Код uint8_t Spi_MasterTransfer(en_spi_channel_t enCh, uint8_t data) { uint8_t retval; ASSERT(IS_VALID_CH(enCh)); if(Spi0 == enCh) { while(TRUE != M0P_SPI0->STAT_f.TXE); M0P_SPI0->DATA = data; while(TRUE != M0P_SPI0->STAT_f.RXNE); retval = M0P_SPI0->DATA; } else { while(TRUE != M0P_SPI1->STAT_f.TXE); M0P_SPI1->DATA = data; while(TRUE != M0P_SPI1->STAT_f.RXNE); retval = M0P_SPI1->DATA; } return retval; } Да, тайм-ауты надо вернуть, не помешают. UART. С библиотечными функциями тоже не сложилось. В примерах DDL они местами обходятся, без особых объяснений. Пока что работоспособный вариант (на прерываниях) выглядит так (в устройстве полудуплекс, потому прерывание RX можно запрещать на время передачи и наоборот). Код void USART_SendBlock(uint8_t bl) { TxPointer = 0; TxCount = bl; Uart_ClrStatus(UARTCH0,UartTC); M0P_UART0->SBUF = TXbuffer[0]; Uart_DisableIrq(UARTCH0,UartRxIrq); Uart_EnableIrq(UARTCH0,UartTxIrq); } Код void UART0_IRQHandler(void) { uint8_t tmp; //TX if(Uart_GetStatus(UARTCH0, UartTC) == TRUE) { Uart_ClrStatus(UARTCH0, UartTC); if (TxPointer < TxCount) // it's end? { TxPointer++; // next byte M0P_UART0->SBUF = TXbuffer[TxPointer]; } else { Uart_DisableIrq(UARTCH0,UartTxIrq); Uart_EnableIrq(UARTCH0,UartRxIrq); TxCount=0; TxPointer=0; } } else { //RX if(Uart_GetStatus(UARTCH0, UartRC) == TRUE) { tmp = M0P_UART0->SBUF; Uart_ClrStatus(UARTCH0, UartRC); //then store tmp in RX buffer etc. } else Uart_ClrIsr(UARTCH0); //other flags } } Всё бы ничего, если бы скорость была правильная. При использовании RCH (22,12 МГц, и 24 МГц тоже) в качестве источника тактирования это оказалось не так. При установке 115200 бит/с реальная скорость оказалась 113500. Вылечилось "грязным хаком" в sysctrl.c: задефайнена экспериментально подобранная константа Код #define RCH_CR_TRIM_USER22M_VAL 1860 и применена вместо RCH_CR_TRIM_22_12M_VAL в функции Sysctrl_SetRCHTrim: Код en_result_t Sysctrl_SetRCHTrim(en_sysctrl_rch_freq_t enRCHFreq) { en_result_t enRet = Ok; //Load RCH Trim value switch (enRCHFreq) { case SysctrlRchFreq4MHz: M0P_SYSCTRL->RCH_CR_f.TRIM = RCH_CR_TRIM_4M_VAL; break; case SysctrlRchFreq8MHz: M0P_SYSCTRL->RCH_CR_f.TRIM = RCH_CR_TRIM_8M_VAL; break; case SysctrlRchFreq16MHz: M0P_SYSCTRL->RCH_CR_f.TRIM = RCH_CR_TRIM_16M_VAL; break; case SysctrlRchFreq22_12MHz: //M0P_SYSCTRL->RCH_CR_f.TRIM = RCH_CR_TRIM_22_12M_VAL; M0P_SYSCTRL->RCH_CR_f.TRIM = RCH_CR_TRIM_USER22M_VAL; break; case SysctrlRchFreq24MHz: M0P_SYSCTRL->RCH_CR_f.TRIM = RCH_CR_TRIM_24M_VAL; break; default: enRet = ErrorInvalidParameter; break; } return enRet; } Константа заводской калибровки, вычитанная по адресу 0x00100C02, в конкретном контроллере равнялась 1845. С другим чипом фокус не сработал, тоже пришлось подбирать. Естественно, так делать не надо. Возможно, мне попались МК из первых партий, с кривыми калибровками, и в дальнейшем исправили. Но лучше всё-таки кварц поставить и забыть о проблеме. А вот это пока не получилось - пока не разобрался, всё переключается, но то ли срывается генерация, то ли что-то ещё - через некоторое время, порядка 100 мс, происходит сброс. Ещё момент - перепутанная таблица векторов прерываний, из-за чего библиотечные функции с указателями на обработчики вовсе не обязательно будут работать (в моём случае это был BT - basic timer, конкретно - нулевой). Лечится заменой стартап-файла из кейловского software pack на таковой из примеров DDL, выбрасыванием из проекта "interrupts_hc32l136.c", обнулением указателей на коллбэки в структурах инициализации и прописыванием обработчиков самостоятельно. Хотя идея с указателями вроде как интересная. В общем-то в необходимости перевода документации, юзер-мануала (того, что у ST референс) прежде всего, и дальнейшего вдумчивого "курения", с самого начала сомнений не было, ну вот оно вживую и подтвердилось. Ссылку на datasheet не на кітайскай мове - сюды! В процесі. Поки грошей за це не дають, справа просувається повільно - час від часу перекладаю фрагменти, котрі цікаві в даний момент. Поки що зробив Перекладом ще займається |
|
|
15.3.2019, 9:10
Сообщение
#5
|
|
Активный участник Группа: Пользователи Сообщений: 10937 Регистрация: 19.4.2011 Пользователь №: 345 |
Ці варта было мудохацца за 20 цэнтаў?
|
|
|
15.3.2019, 9:22
Сообщение
#6
|
|
посіпака Хунти Группа: Мод Сообщений: 20016 Регистрация: 21.11.2009 Из: Vinnitsa Пользователь №: 11 |
Десять бабусьок - уже рупель.
В даному разі інтерес скоріше спортивний. Як колись до TMP87 тошибівських. Зараз пошукаю, як там RSTSRC називається, та й вичитаю, якого фіга воно ресетиться. Ага: M0P_RESET->RESET_FLAG. Чогось на кшталт "clock failure reset" там нема. Але є "System abnormal reset", може, це воно. Код typedef struct
{ uint8_t u8Por5V :1; ///< 5V Start reset uint8_t u8Por1_5V :1; ///< 1.5V Start reset uint8_t u8Lvd :1; ///< Low voltage detection reset uint8_t u8Wdt :1; ///< Watchdog reset uint8_t u8Pca :1; ///< PCA reset uint8_t u8Lockup :1; ///< System abnormal reset uint8_t u8Sysreq :1; ///< Software reset uint8_t u8RSTB :1; ///< RESET pin reset }stc_reset_cause_t; |
|
|
15.3.2019, 9:52
Сообщение
#7
|
|
Активный участник Группа: Пользователи Сообщений: 10937 Регистрация: 19.4.2011 Пользователь №: 345 |
Даю на водку:
https://www.nuvoton.com/hq/?__locale=en |
|
|
15.3.2019, 12:33
Сообщение
#8
|
|
посіпака Хунти Группа: Мод Сообщений: 20016 Регистрация: 21.11.2009 Из: Vinnitsa Пользователь №: 11 |
То я знаю. І "еволюшен борд" їхній є (на NUC140), подарували колись. Та ж сама фішка - живлення від 1,8 до 5 В. Ціни десь такі, як у STM32, але з режимами енергозбереження - повний швах.
Щодо N76LE - так, вони дешевші навіть за STM8S003F3P6 майже вдвічі (10 грн. прямо тут). Ядро 51, котре я непогано знаю. І на цьому все. Пля. Промив плату спиртом. Кварц фуричить.
Прикрепленные файлы
HC32L130_HC32L136_HC32F030_clock_control_module_translated.pdf ( 568,29 килобайт )
Кол-во скачиваний: 53
|
|
|
15.3.2019, 14:17
Сообщение
#9
|
|
Активный участник Группа: Пользователи Сообщений: 10937 Регистрация: 19.4.2011 Пользователь №: 345 |
Яшчэ такія Гіга-дывайсы есць:
http://www.gigadevice.com/products/microco.../arm-cortex-m3/ |
|
|
15.3.2019, 20:01
Сообщение
#10
|
|
посіпака Хунти Группа: Мод Сообщений: 20016 Регистрация: 21.11.2009 Из: Vinnitsa Пользователь №: 11 |
Короче... baud rate generator там такой же, как у многих 51, банальный 16-битный таймер. Тем самым при низких тактовых получить сносную точность скорости UART не получится. Нужна частота или кратная 1,8432 МГц, или где-то от 16 МГц.
...И нахрена я PLL включал? Где-то нахомутал и окирпичил три чипа. Попытаюсь внешнюю тактовую подать, чтобы оживить. Про гигадевайсы я тут постил года где-то два назад. Ещё SN32 есть такие себе. И т.д. и т.п., их там в Китае уже много всяких. HC32 использует в своей продукции китайский, если можно так выразиться, партнёр. Так получилось... |
|
|
20.3.2019, 20:10
Сообщение
#11
|
|
посіпака Хунти Группа: Мод Сообщений: 20016 Регистрация: 21.11.2009 Из: Vinnitsa Пользователь №: 11 |
Уря, товагищи. С помощью кнопки сброса и нецензурных заклинаний над ж-линком один чип раскирпичил. Обошлось без внешней тактовой. В принципе та же фигня, что с EFR32 год назад - штатный "connect under reset" до
(upd) Остальные тоже ожили. |
|
|
21.3.2019, 19:46
Сообщение
#12
|
|
посіпака Хунти Группа: Мод Сообщений: 20016 Регистрация: 21.11.2009 Из: Vinnitsa Пользователь №: 11 |
RTFM, едрить. Всё там нормально и с UART, и с калибровкой RCH. Кварц на 11,0592 нашёлся, но выпаял взад, за ненадобностью.
Одну циферку не приметил. UART Mode 3 вместо 1. 3 - это 9 бит. |
|
|
24.3.2019, 11:55
Сообщение
#13
|
|
посіпака Хунти Группа: Мод Сообщений: 20016 Регистрация: 21.11.2009 Из: Vinnitsa Пользователь №: 11 |
Осталось два чудика. Один не коннектился с j-link изначально (то, что в него было прошито - как-то работает), второй через раз и обнаружилось КЗ на землю с одного из портов. Фен-паста-тестер... тоска.
|
|
|
24.3.2019, 12:36
Сообщение
#14
|
|
Активный участник Группа: Пользователи Сообщений: 10937 Регистрация: 19.4.2011 Пользователь №: 345 |
Нагу асобна падняць, провадам эмалірованым працягнуць.
|
|
|
8.4.2019, 19:21
Сообщение
#15
|
|
посіпака Хунти Группа: Мод Сообщений: 20016 Регистрация: 21.11.2009 Из: Vinnitsa Пользователь №: 11 |
Відразу не помітив... там корпус QFN, підняти можна тільки весь. Поки що не брався, роботи дофіга... в двох інших платах на землі сидять кілька інших портів, підозрюю, що з метою мінімізації енергоспоживання. Або ж "просто так вийшло".
|
|
|
23.5.2019, 20:29
Сообщение
#16
|
|
Активный участник Группа: Спамеры Сообщений: 9485 Регистрация: 18.8.2010 Из: Kursk Пользователь №: 199 |
Відразу не помітив... там корпус QFN, підняти можна тільки весь. Поки що не брався, роботи дофіга... в двох інших платах на землі сидять кілька інших портів, підозрюю, що з метою мінімізації енергоспоживання. Або ж "просто так вийшло". Корпус QFN хорош тем, что его можно отпаять даже простым паяльником, прогрев термал пад со дна. Я уж молчу про фен, газовый паяльник и ИК-паяльник |
|
|
24.6.2019, 8:26
Сообщение
#17
|
|
посіпака Хунти Группа: Мод Сообщений: 20016 Регистрация: 21.11.2009 Из: Vinnitsa Пользователь №: 11 |
Пошла какая-то движуха. В английской версии сайта возник раздел "Download". Естественно, пустой.
|
|
|
24.6.2019, 11:49
Сообщение
#18
|
|
Активный участник Группа: Спамеры Сообщений: 6871 Регистрация: 28.2.2015 Пользователь №: 1190 |
Опять нет повода не выпить
|
|
|
8.8.2019, 12:16
Сообщение
#19
|
|
посіпака Хунти Группа: Мод Сообщений: 20016 Регистрация: 21.11.2009 Из: Vinnitsa Пользователь №: 11 |
|
|
|
9.8.2019, 5:56
Сообщение
#20
|
|
Активный участник Группа: Спамеры Сообщений: 6871 Регистрация: 28.2.2015 Пользователь №: 1190 |
Касательно корпусов.
АД выпустили мсх 5940 исключительно в бга (биджиэй, кому не понятно). Будущее неумолимо наступает, как ни крути. Бабушкам с паяльниками пора на пенсию. |
|
|
Текстовая версия | Сейчас: 29.3.2024, 9:51 |