Какая маркировка у используемой Вами флешки?При установке InterimLength = 2 или использование кода из капельки - контроллер подвисает.
W25q64jvssiqКакая маркировка у используемой Вами флешки?
W25Q64JV режим QPI не поддерживает, а в QSPI режиме (команда чтения 0xEB) InterimLength = 3. Хотите быстрее (QPI с InterimLength = 1), меняйте версию JV на FV, то есть на серии W25Q32FV, W25Q64FV, W25Q128FV, W25Q256FV. Из самых быстрых они самые недорогие.W25q64jvssiq
Щас вот баловался с прерываниями и кольцевыми буферами для UART, и вот вам ещё такой совет из разряда "сумеречной индусской магии".И как быть теперь с теми же прерываниями и потоковой передачей данных при работе из флеша?
#define __NOP() __asm volatile ("ADDI x0, x0, 0") //такой костыль, ибо в RISC-V нет родной команды nop!
while (rx_counter == 0) ; //не очень стабильно, особенно когда включаешь оптимизацию в компиляторе
while (rx_counter == 0) __NOP(); //как ни странно, намного лучше!
У WCH, насколько знаю, память сделана более-менее по классике. А вот у GigaDevice всё сложно, и, скорее всего, флешка внутри тоже подключается через SPI.Если я правильно понимаю, в МК производства GigaDevice код из Flash-памяти (отдельный кристалл) при запуске автоматически копируется в "теневое" ОЗУ и уже оттуда выполняется, как и в МК производства Nanjing Qinheng Microelectronics (WCH).
Не там математика просчитывается - интерпритатор плк программы. Я почему флеш и использую - EEPROM очень маленькая, в нее что то нормальное не впихнешь. Сейчас моя программа весит около 60кб (там и графический редактор программ и интерпритатор). По уарту (для экономии ног их там задействовано 13) у меня цепляется дисплей (на базе ардуины) на котором рисуется вся графика плюс обрабатывается татч. Но походу придется дисплей цеплять напрямую к пинам Амура.Щас вот баловался с прерываниями и кольцевыми буферами для UART, и вот вам ещё такой совет из разряда "сумеречной индусской магии".
У вас цикл while (1) пустой без ничего? И вообще, есть такие моменты, где код топчется на месте? Попробуйте-ка разбавить эти места...холостыми командами! Вот пример чтобы было понятнее:
Я с такими странностями сталкивался ещё на чипах от GigaDevice. Там тоже разбавить код nop-ами помогало заставить работать его стабильнее. А ведь у ГигаДевайса тоже фишка в том, что флешка не интегрирована в кристалл, а нахлобучена поверх отдельным чипом. совпадение? Не думаю!C:#define __NOP() __asm volatile ("ADDI x0, x0, 0") //такой костыль, ибо в RISC-V нет родной команды nop! while (rx_counter == 0) ; //не очень стабильно, особенно когда включаешь оптимизацию в компиляторе while (rx_counter == 0) __NOP(); //как ни странно, намного лучше!
Я тоже ничего не нашёл, а посему решил не рисковать и запихнул в свою поделку преобразователи уровня. Вероятно, буду делать так и далее, это не сильно дорого, но снимает массу вопросов.Вопрос к знающим не по теме топика - а у Амура пины толлерантны к 5 вольтам, если да то какие ? В даташите я ничего на эту тему не нашел.
Согласно техническим условиям АДКБ.431290.418ТУ, нет.у Амура пины толлерантны к 5 вольтам, если да то какие ?
Спасибо за ответ, хорошо что я не подключил свой 5-ти вольтовый дисплей к нему - было бы не приятно получить кирпичик.Согласно техническим условиям АДКБ.431290.418ТУ, нет.
Входное напряжение высокого уровня для многофункционального вывода в цифровом режиме, В:
предельно допустимый режим - Ucc; предельный режим - Ucc + 0,3.
Думаю, у вас бы при этом ничего не сгорело, ведь выходы у дисплея наверняка имеют ограничение выходного тока. С другой стороны, даже если у контроллера ноги НЕ толерантны к 5В, то на них, по крайней мере, есть защитные диоды, сбрасывающие избыток напряжения на входах в шину питания. И даже, не исключено, что всё бы заработало! Как минимум, потому, что у многих чипов даже с 5В питанием по входу порог уровня единицы ниже 3,3В. Но даже если для вашего дисплея входные уровни единицы как бы считаются не ниже Uпит * 0,7, то бывает, что в жизни они ниже! Хотя, конечно, сильно рассчитывать на такое везение не стоит.хорошо что я не подключил свой 5-ти вольтовый дисплей к нему - было бы не приятно получить кирпичик.