Поздравляем alho с днём рождения!
- Возникла непонятная проблема при записи во встроенную флеш у
AT32F407. Запись ведется при исполнении программы из этого же
флеша, в область не занятую программой. Перед записью работают
уарты, таймеры, ацп, дма, ethernet, ни чего не запрещается, только
запрещаются прерывания через __disable_irq() То, что программа
остановится на время записи меня не смущает. Запись в итоге
выполняется (записывается один сектор), но после записи программа
может улететь не пойми куда, что AlexBi(175 знак., 21.03.2025 12:30, ARM, полностью)
- Насколько периферия CH32V схожа с CH32F (Таймеры и пр.)? vpv.vpv(395 знак., 19.03.2025 11:11, ARM, полностью)
- Большое всем спасибо! Теперь как-то энтузиазму поприбавилось. )) - vpv.vpv(19.03.2025 13:48)
- периферию шью по докам от СТМ, но одним глазом смотрю в родную.
Пока проколов не было. Дажэ наоборот, в ВЦШной, у СПИ нарисовано,
что только ЛСБ(илиМСБ) лезет первым, но если программировать по
СТМовской, то лезет первым и тот, и тот. - mse homjak(19.03.2025 12:11)
- С CH32F периферия должна совпадать почти полностью, там даташиты
даже общие. Про STM32F читать можно, но имейте ввиду, что CH32 не
копия, очень очень похожие, но другие МК. AlexG(71 знак., 19.03.2025 12:03)
- Даже не столько ch32f, а stm32f. Большая части периферии, похоже,
взята оттуда. Да и информации по STM-кам больше. Разве что эта
информация перемешана с мусором вроде ST-HAL. COKPOWEHEU(152 знак., 19.03.2025 11:39,
)
- Да. - petrd(19.03.2025 11:21)
- Да, так и надо делать. - SciFi(19.03.2025 11:13)
- Вот такой вопрос по HardFault. Вроде как обычно (у меня по крайней
мере) четко отрабатывалась ситуация выхода индекса за пределы
массива. И МК впадал куда надо. Но вот обнаружилась ситуация, что я
превышаю границу массива, никто никуда не впадает, рестарта не
происходит. Но зато непредсказуемая порча переменных, которые вроде
как даже рядом не лежат с этим массивом. При чем этот массив у меня
в памяти SRAM2 (STM32L476). А портились переменные в памяти SRAM1.
И еще о Лaгyнoв(229 знак., 18.03.2025 10:10, ARM, полностью)
- Скажите, есть ли где описание ассемблера для CH32V003 / CH32X035
(QingKeV2/V4)? Гуглится что-то типа
"QingKeV4_Processor_Manual.PDF", но на сайте WCH даёт или китайские
иероглифы, или 404. - vpv.vpv(14.02.2025 10:27, ARM, полностью)
- нормально скачивается через хром+VPN - DVV(27.02.2025 20:11)
- Кстати, никто ещё IAR EW RISC-V 3.30.1 не пробовал? там заявлена
поддержка устройств V003 и V203 vpv.vpv(140 знак., 26.02.2025 11:50, ссылка)
- Сегодня коллега исследовал chatGPT на предмет написания
программулины для RISC-V CH32V. Результат не тестировался, но
выглядел достаточно достоверно :) - VLLV(25.02.2025 17:15)
- Вот основные доки для этих процов LightElf(62 знак., 24.02.2025 20:24, ссылка, ссылка)
- Не видел у WCH документов по ассемблеру для CH32V. А в
"QingKeV4_Processor_Manual", RM и DS о нем точно ничего нет. Это же
стандартный ассемблер для RISC-V + немного от себя: petrd(847 знак., 14.02.2025 11:29)
- Понятно. Нашёл какой-то "Risc-V card", в принципе, почти то, что
хотел. Мне бы только к мнемонике привыкнуть, чтоб листинги
осмысленно смотреть .)) - vpv.vpv(14.02.2025 12:04)
- в Upload выложил черновик инструкций RISC-V RV32/64 IEMC Zikon(671 знак., 24.02.2025 19:52, ссылка)
- Спасибо! Тоже выложил какую-то шпаргалку и более-менее развёрнутое
руководство по RISC-V (какое нашёл). Может кому будет интересно.
Так-то примерно всё понятно. Условные переходы обозвали как
бренчи... Но общий пазл пока не сложился. )) - vpv.vpv(25.02.2025 07:23)
- Подумаваю в будущем заменить Атмеги/Аттини AVR на мелкие CH32V
(которые 5В/20мА I/O). Главное - встретил упоминание о "Command
Line Tools". т.е. врозможность программировать их тыщами. Скачал
MRS, получил с Али демо-платку и Link-E, поиграюсь на досуге. :)) - vpv.vpv(25.02.2025 07:33)
- мелких надо v002, v004 ... посмотреть Zikon(314 знак., 25.02.2025 10:56)
- А USB dev/otg как у стм32F103/F105? - Andreas(03.03.2025 11:54)
- V203G8 то же самое: два USB вывели, а вот ноги кварцев забыли. А
еще с интерфейсом программирования накосячили: не через UART1, как
у всех, а через UART2. Ну хоть boot0 на месте. - COKPOWEHEU(03.03.2025 11:41,
)
- Да, для мелких 003, видимо, посчитали, что интерфейсов I2C и UART
на ногах будет достаточно. )) По питанию, я так понял, vpv.vpv(356 знак., 25.02.2025 12:18)
- CH32x035 - наконец-то понял почему буква X в этой серии ! Zikon(454 знак., 13.03.2025 08:10, ARM, полностью)
- CH32V003. Смотрел на работу внутренностей, хотел посмотреть как
работает предсказатель переходов и наткнулся на сопутствующее
непонятное (для меня) поведение. petrd(1878 знак., 07.03.2025 08:42, ARM, картинка, картинка, полностью)
- А почему код такой большой и стек используется Zikon(1382 знак., 07.03.2025 12:38)
- выравнивание команд на куда переход идет - 2 и 4 байта играет роль
- скорее всего ! Zikon(134 знак., 07.03.2025 11:32)
- Вот интересная статья, но только с ch32x035 может чем-то поможет ! Zikon(1 знак., 07.03.2025 09:19, ссылка)
- Предположу, что выравнивание инструкций во флеш меняется, отсюда и
время доступа к ним, wait state. - Nikolay_Po(07.03.2025 09:06)
- Мужик пишет письмо на спичечную фабрику: "Я на протяжении 10 лет
покупаю спички Вашей фабрики и считаю количество спичек в коробке.
Вы их кладёте то 59, то 60 штук, иногда 61, а вчера положили 56. Вы
что там, совсем ебанутые?" - POV(07.03.2025 08:55)
- 8-D - Vit(07.03.2025 08:58)
- А как там флеш, задержки при чтении, предвыборка кода? Погрешность
измерения слишком велика, чтобы достоверно намерить 2 такта, КМК. - SciFi(07.03.2025 08:47)
- Ребят, а как можно по средствам LWIP вытащить широковещательный
пакет изернет и посмотреть его до кишек с Хеадерами итд итп, а так
же отправить пакет.. Возможно тут lwip вообще не причем? Eth
lan8720.. Грубо говоря на канальном уровне - Balda(05.03.2025 15:05, ARM, полностью)
- Господа, а что такое субприоритет в прерываниях STM32? Приоритет
понятно, а субприоритет? Это что приоритет в приоритете чтоль? Чет
никак ни всосу. - Balda(28.02.2025 21:45, ARM, полностью)
- Незатейливый вопрос - нужно в цикле делать переменную сначала 0
потом 1. Кто как делает? Mty1(38 знак., 27.01.2025 13:12, ARM, полностью)
- ну ды нк ЯВУ домножением на -1, если "int 1" или инверсия если
"логическая переменная" , а на ассемблерах XOR. Если ЯВУ, то какой
смысл "ловить блох" на такой редкой операции и оптимизировать по
скорости?? ну как-то так. - Adept(28.02.2025 15:24)
- Тык VladislavS.(1 знак., 27.02.2025 23:32, картинка)
- XOR наше всё! - Yft(27.02.2025 14:53)
- пришло время освежить ветку... POV(5 знак., 27.02.2025 14:04, картинка, картинка)
- (i++) & 0x1 - 0x1(26.02.2025 15:22,
)
- btg PORTA,5,0 - Бapбoc(29.01.2025 18:33)
- int before = x, after; do { after = rand() & 1; } while (before ==
after); x = after; - SciFi(29.01.2025 13:04)
- x = 1 - x - acex2(29.01.2025 12:59)
- if((Делаете для себя)&&(тип bool)){можно xor 1;} else{
только х=!х; } - CтpaycTpyп(28.01.2025 14:51,
)
- обсудили тут в своем коллективе. Пришел(я не знаю как они) к выводу
если переменная bool то правильно x=!x, если uint то можно и x ^=
1; abivan(361 знак., 28.01.2025 12:17, картинка)
- bcpl adr, #bit - argus98(28.01.2025 11:53)
- x ^= 1; - Cкpипaч(27.01.2025 19:24)
- не хрен ! if (x == 0) x = 1; else x = 0; - De_user(27.01.2025 17:24)
- булевы операции экономичней в плане ресурсов. Поэтому - второе - bodis(27.01.2025 16:37)
- бережоного бох бережёт, сказала монашка =AlexD=(55 знак., 27.01.2025 15:55)
- А вот у меня с "начальной школы" в памяти отложилось, что результат
логических операций либо ноль, либо ненулевое значение. А люди
тыкают в Госты, а там 0 и 1! Откуда у меня это заблуждение? Из
Бейсика? Фортрана? Кернигана-Ричи? - IBAH(27.01.2025 15:31)
- в смысле? Nikolaev_Aleksey(23 знак., 27.01.2025 15:00)
- AND ? Tyмблep(18 знак., 27.01.2025 13:20)
- В смысле? mse homjak(12 знак., 27.01.2025 13:15)
- Сборник граблей STM32, по наводке с Хабарки. Toчкa oпopы(1 знак., 23.02.2025 11:15, ARM, ссылка, полностью)
- Подскажите, где и как у всяческих CH32 посмотреть "lot number"?
Вчитался в referece manual и понял, что китайцы наплодили заметно
отличающихся ревизий кристаллов. - AlexG(12.02.2025 09:00, ARM, полностью)
- UPD. Программное определение лота возможно LightElf(1270 знак., 13.02.2025 14:55 - 14.02.2025 15:15, картинка)
- В главе 33 пишут, что регистр R32_EXTEN_CTR2 (0x40023808)
существует только у более кошерных лотов. Можно попробовать его
почитать-пошевелить. LightElf(188 знак., 12.02.2025 19:57)
- А где в мануале такое, что есть разница? Семейства у них есть,
всякие там D6, D8, D8C, D8W - но они жестко к моделям прибиты и
описаны в табличке: LightElf(84 знак., 12.02.2025 15:10)
- Кокойты нутряной регистр. - mse homjak(12.02.2025 13:03)
- Кто-нибудь пробовал в МК похожих на CH32F207 переключать туда-сюда
HCLK на лету? Что-то у меня после такого передача пакетов Ethernet
ломается, хотя прием продолжает работать. AlexG(34 знак., 25.01.2025 14:21, ARM, полностью)
- UPD2: Дело похоже в поле CR регистра ETH->MACMIIAR, в которое
при HCLK 144 МГц нужно записать не описанное в китайской
документации значение 1 - AlexG(03.02.2025 13:56)
- UPD: эффект похоже связан со встроенным PHY, т.к. возникает когда
MAC еще не инициализирован и устраняется передергиванием сетевого
кабеля. Если кабель не был подключен - не возникает. - AlexG(27.01.2025 10:45)
- В мануале на CH32V207 (c 479) наблюдаю "When using an Ethernet
transceiver, the clock of the HB bus cannot be lower than 50MHz".
Проверьте значение - Vit(25.01.2025 17:45)
- в каком плане похожих, и куда и когда тактовую переключаем? может у
вас таймауты какие с константами, рассчитанными для фиксированной
частоты, на ходу разлетаются, а вы на кремний смотрите с
ethernet-передачей - Vit(25.01.2025 14:55)
- Похожие это, как минимум, STM32F207 и CH32V307. В принципе, всё
STM-образное с ethernet'ом. Возпрос возник из-за того, что у
CH32F207 есть ограничение по допустимой тактовой при записи во
flash. Я пробую тактовую на время снизить, поработать с flash,
затем вернуть тактовую как было. После возвращения получаю
отсутствие ethernet-пакетов от устройства. Из таймеров кажется,
только systick и используется, плюс используется CAN, у которого
часть пакетов в процессе бьется. Вообще AlexG(88 знак., 25.01.2025 16:45)
- а межу тем китайцы сделали ch32v317. по сравнению с 307 eth phy
теперь может на 100М работать, есть микросхема в QFN36 и QFN68. на
аглицкой версии сайта не упомянут. klen(72 знак., 20.08.2024 01:45, ARM, ссылка, полностью)
- Поделитесь опытом, кто как делает обработку ошибок в устройстве.
Есть система с ADC UART EEPROM, короче разной периферией. Хочу
сделать обработку нештатных ситуаций, и хранение статусов ошибок
каждого периферийного модуля. Думаю по каждому модулю сделать
структуру. Mty1(479 знак., 27.01.2025 15:11, ARM, полностью)
- Очень странный вопрос. Можно для STM32 (да и вообще в любом МК)
сделать для UARTа так, чтобы при передаче у него было 2 стоповых, а
на приеме он мог принимать посылку с 1 стоповым битом? Такие
извраты у меня от того, что большой парк у меня колонок и там самые
разные чудеса. :-) - Лaгyнoв(30.12.2024 05:59, ARM, полностью)
- Вчера проверяли STM32G491 настроеный на 2 стоп бита с устройством с
одним стоп битом. Работало как швейцарские часы. Возможно
взводилась ошибка фрейма (FE), но лень было проверять. - BlackMorda(21.01.2025 23:18)
- А, что: в Вашем МК только один UART? При двух задача решается
легко: один - на приëм, другой - на передачу! - Пaлыч(31.12.2024 20:24)
- Это не извраты, а нормальное поведение UART. И именно так оно
реализовано в STM32 - il-2(31.12.2024 11:34)
- У меня с EWARM-8509 другой интересный прикол. Одна и та же версия
(с одной флешки) стоит на работе и дома. Дома, при отладке своей
программы, я открываю окошко регистров и пытаюсь посмотреть работу
ADC, GPIOA ... а их нет! А вот счетчики, USART, I2C... есть!
Приблизительно половина переферии как регистры не видны. Если
смотреть в окне памяти, то видно биты и байты изменяются как надо.
Но, конечно в окне регистры, где видны имена байтов и битов конечно
удобнее работать. Я Sl(78 знак., 30.12.2024 16:52)
- Если память позволяет, то подготовить буфер с состояниями TxD на 2
стопа и пулять их в порт через ДМА. На приём, обычным УАРТом с 1
стопом. - mse homjak(30.12.2024 13:19)
- режим переключать или 2 UARTa использовать. есть старая проблемка в
блоках UARTов - "укороченный стоп-бит" и практически тименно так и
лечится. даже где-то в Modbus over Serial рекомендуют, не вникая в
подробности. Vit(1 знак., 30.12.2024 12:46, ссылка)
- ха-ха... В древности, когда у меня не было в МК аппаратного UART и
был софтовый, я ж так и делал. :-) Сейчас порылся и нашел. При
передаче у меня было 2 стоповых, а на приеме 1 и я сразу переходил
к ожиданию старта след. байта. - Лaгyнoв(30.12.2024 11:50)
- Стоповые биты нужны для того, чтобы приёмное устройство
гарантированно успело обработать принятый байт. Если передаются не
очень много данных, и не используется dma, можно их передавать
пореже. Например по таймеру, чтобы в конце было не менее двух
стоповых бит. А настраивать с одним стоповым битом - Andrey190(30.12.2024 08:05)
- Это не очень-то и изврат. Такое встрачается и называется 1,5
стоповых. Я делал когда-то, но не на STM. Если обмен
полудуплексный, то можно просто менять настройки USARTа туда сюда. - AlexG(30.12.2024 07:22)
- я всё голову ломал - что и зачем 1,5 стоповых. :-) У меня в
8-битнике было 1 или 2. - Лaгyнoв(30.12.2024 08:15)
- По стандарту 1.5 стоповых бита применимо только к 5-битным байтам.
Для 7,8,9-битных - только 1 и 2 стопа. Не знаю про специфику G0, но
обычно количество стоповых бит влияет только на передачу, на приём
пофигу. - LightElf(31.12.2024 14:46)
- При несовпадении количества stop-bit на приеме формируется framing error, но данные при этом принимаются. reZident(1 знак., 31.12.2024 15:32, картинка)
- На следующей же странице оного RM0454 (гляжу в ревизию 5) доходчиво
сказано: LightElf(1 знак., 02.01.2025 01:04, картинка)
- это я тоже увидал. Ошибки FE не будет. Но почему не пишут о
достоверности данных, когда пойдет старт следующего байта в момент
второго стопового? Вот ведь в чем засада. Сейчас нет под рукой 070,
но точно помню, что была сдвижка на 1 бит. Через неделю смогу
проверить - Лaгyнoв(02.01.2025 06:56)
- Да не должна сдвижка происходить. Приём байта синхронизируется от
стартового бита, потом забираются биты данных, потом ожидается один
стоповый. Сколько длится "1" между первым стоповым и последующим
стартовым "0" - влиять ни на что не должно. У вас или помеха
какая-то пролетает, или скорости UART разбегаются сильно. Может
подтяжку входа RX к "1" забыли поставить/включить? - LightElf(02.01.2025 14:24)
- Дык он хочет находится в режиме с двумя сторонами - чтобы при
передаче два стоповых было. - Nikolay_Po(02.01.2025 14:27)
- Два стоповых нужны если скорость высокая, а приёмник без fifo или
совсем софтверный и наступает overflow. ТС не там проблему ищет. - LightElf(02.01.2025 15:04)
- ТС не глупее нас. Всё он там ищет. У него окружение такое, что есть
устройства (которые не будут обновляться), которым нужно два стопа,
чтобы корректно принимать. И, в то же время, есть устройства,
которые ведут передачу без второго, лишь с одним стоп-битом. И если
я правильно понял ТС, в таком случае, когда UART настроен на два
стопа, а поток идёт с одним стопом, есть проблемы с приёмом. Пока
не разобрались до конца в каком случае происходит сбой, но приём
идёт с ошибками. - Nikolay_Po(02.01.2025 16:01)
- То есть, ошибки при приёме прошедшего кадра не будет, но вот приём
первого байта следующего кадра может быть нарушен, если возврат на
уровень mark произошел не в пределах второго стоп-бита? - Nikolay_Po(02.01.2025 14:18)
- Я не знаю, как в STM, но другие контроллеры отродясь при приёме
стопы не считали. Приёмнику стоп нужен только чтобы старт
обнаружить... - Idler(30.12.2024 06:19)