Jump to content

    

Oleg_IT

Свой
  • Content Count

    936
  • Joined

  • Last visited

Everything posted by Oleg_IT


  1. Есть готовый модуль с STM32F417, на нём стоит NAND. Как я понимаю, программа туда и записывается. Нужно сохранить несколько байт настроечной информации, периодически она может меняться. Как записать/считать данные и как выбрать адреса куда записывать в NAND, что бы там ни чего не испортить?
  2. Спасибо, посмотрю.
  3. Программу собрал на STM32CubeMX с ETH и LWIP, установки по умолчанию. Не могу понять, как заставить программу передавать свои буфера. АЦП заполняет буфер через DMA по циклу, генерятся прерывания HAL_DMA_STATE_READY_MEM0, HAL_DMA_STATE_READY_HALF_MEM0, в обработчике прерывания АЦП ставлю флаг и в главном цикле соответствующий буфер нужно передать по изернет. Cube ставит только инициализацию LwIP (MX_LWIP_Init();), а всё остальное, как я понимаю, нужно самому прописывать. Нашел только функции MX_LWIP_Process() и HAL_ETH_TransmitFrame(…). Также вижу инициализацию DMA для отправки и приёма данных своими внутренними буферами Tx_Buff и Rx_Buff. Индикация на изернет разъеме есть, зелёный слева, жёлтый мигающий справа. Как создать соединение? Средствами API LwIP? Как подставить в DMA для изернет свои буфера? В тех примерах, которые мне доступны на мои вопросы ответов не нахожу.
  4. STM32F417. Есть два дивайса, датчик температуры и управляемый резистор, из первого нужно только читать данные, во второй только писать, выводы MOSI, MISO развожу по соответствующим девайсам, CS понятно разные. SPI2 назначать как Full-Duplex Master?
  5. Да, именно не назначил. Разобрался, спасибо. МК STM32F417ZGT. А по Ethernet ни чего не можете подсказать. drozel. Этот МК у меня далеко не первый. А программу использую как хороший инструмент конфигурирования и сборки нужных библиотек и не важно *.lib там или *.c
  6. У меня не доступно редактирование этого параметра. drozel почему не рекомендуете? По моему очень полезная и удобная программа.
  7. 1. Да с HSI-HSE ошибся, но всё равно не найду где задавать. 2. Как я и предполагал, руками по примеру того как строит код STM32CubeMX. 3. ??? Кто знает помогите разобраться.
  8. Установил STM32CubeMX. Всё вроде бы нормально, генерится, компилируются, но три вопроса остались. 1. Не могу изменить частоту кварца HSI, по умолчанию 16 МГц, а на модуле 25. 2. ARM должен работать с железкой по параллельному интерфейсу, 8 выводов GPIO могут быть и Input и Output. Но задать инициализацию выводов получается только на одно направление. Второе придётся руками дописывать? 3 Где в модуле Ethernet задавать IP адрес, маску, адрес шлюза, DNS?
  9. Ручками буду работать, тем более, что на AVR UDP я полностью сделал, так что опыт есть. Хочется время сэкономить на таких вещах.
  10. Я разработчик продукта? Какого? Я про библиотеку изернет стека говорю от Keil, я её не разрабатывал:) Ну если такое чудо случилось, то я счастлив. В установленном пакете много чего про TCP есть. Как я понимаю там копать.
  11. А как в четвёртой версии изернет без доработки работает, я просто подключил библиотеку. Все остальное буду ручками делать, но изернетовский стек самому как то не хочется делать
  12. Дождался я макетки с целевым ARM STM32F417. Keil V4 не поддерживает этот процессор, поставил Keil V5.15, загрузил паки. Начал формировать проект и полезли проблемы. 1. Включаю изернет, SPI пишет несовместимый, не установлено (Additional software components required),… На их сайте нашёл только описание библиотек, как загрузить не вижу. 2. Не найду как включить АЦП. 3. На плате физический уровень изернета реализован на RTL8201BL. В списке Manage … такого нет. В версии 4 выбора вообще нет, просто библиотека изернет без всяких уточнений. Загрузил паки для LPC. Моего старенького LPC2478 там нет. Перестали поддерживать или я чего не вижу?
  13. Вах!:) По EMAC не прав конечно, вот он какой есть, файлик этот LPC24_EMAC.c. Осознать бы, где чего смотреть. LPC24_EMAC.c из примера взято, собственно вся моя программа из примеров собрана, сам только собрал проект из ... двух проектов LEDClient и ADC. По поводу успевает ли приёмная сторона, период посылок 0.02 с (~45Гц), компьютер 3,4 ГГц 16Гб ОЗУ, думаю справляется. Но как я понимаю, если даже не справляется, то просто передача должна остановится, ошибки по памяти быть не должно. Как то она не предсказуемо падает, иногда минуты не работает, а иногда 10-15 минут работает. Поставил контроль выделяемой памяти, если адрес в очередном цикле меняется, то это фиксируется. Перед падением часто адрес менялся, но в пределах двух килобайт.
  14. Скорей всего не та ситуация, осциллографом вижу что и таймер и АЦП продолжают работать, нет именно передачи. По поводу _EMAC_. Там же всё в библиотеке, исходников стека у меня нет.
  15. Посмотрел я шарком, ни чего интересного, просто нет очередной посылки, сервер пытается несколько раз достучатся до клиента, но безуспешно и всё останавливается. Если ставлю низкую скорость оцифровки программа всё равно вылетает, но позже, несколько минут работает. А где и как его смотреть?
  16. Длина до 10 см, пока, в этом исполнении. А вообще может понадобится и намного длиннее, но это не сейчас.
  17. Чуть меньше это уже не изолирование внутренней поверхности трубы, а просто одеть эту ПВХ на то, что идёт внутри. По поводу Киевского дядьки от zltigo. Вы же говорили о возможной реализации и я о том же, материал после термообработке может быть не только мягким, но и твёрдым. Вижу для себя два решения от halfdoom "тонкостенной пластмассовой вставки", но если подобрать по диаметру не получится то лак.
  18. Померил период обращения к функции main_TcpNet, максимум 6.5мкс, АЦП работает по прерыванию. Привожу код инициализации таймеров и АЦП. U32 ADCInit( U32 ADC_Clk ) { /* Enable CLOCK into ADC controller */ PCONP |= (1 << 12); AD0CR = ( 0x01 << NumCh ) | /* SEL=1,select channel 0~7 on ADC0 */ ( N_ADC << 8 ) | /* CLKDIV = Fpclk / 4000000 - 1 */ ( 0 << 16 ) | /* BURST = 1, BURST */ ( 0 << 17 ) | /* CLKS = 0, 11 clocks/10 bits */ ( 1 << 21 ) | /* PDN = 1, normal operation */ ( 0 << 22 ) | /* TEST1:0 = 00 */ ( 4 << 24 ) | /* MAT0.1 */ ( 1 << 27 ); /* EDGE = 0 (CAP/MAT singal falling,trigger A/D conversion) */ /* If POLLING, no need to do the following */ AD0INTEN = 0x100 | (0x01 << NumCh); /* Enable interrupts */ return (U32)install_irq( ADC0_INT, (void *)ADC0, HIGHEST_PRIORITY ); } /*--------------------------- init ------------------------------------------*/ unsigned int SetTimer9 = 0x0000400; //unsigned int SetTimer9 = 0x0000000ED; static void init(void) { PCONP |= 0x40001000; /* Enable for ADC Ethernet block */ PINSEL1 |= 0x00054000; /* Enable ADC&DAC Pins */ T1MCR = (3 << 0);// /*| (1 << 3)*/ | (1 << 4); T1MR0 = TCNT - 1; // install_irq( TIMER1_INT, (void *)Timer1, HIGHEST_PRIORITY ); // T0MCR = (1 << 3) | (1 << 4); // MR1: Interrupt Reset T0MCR = (1 << 4); // MR1: Reset T0MR1 = SetTimer9; T0EMR = (1 << 1) | // MAT0.1 P1[29] (1 << 6) // Set the corresponding External Match bit/output to 1 (MATn.m pin is // HIGH if pinned out). ; // install_irq( TIMER0_INT, (void *)Timer0, 1);//HIGHEST_PRIORITY ); ADCInit( ADC_CLK ); } N_ADC расчётное и равно 512. TCNT - 1 такое что бы период таймера был 10 мс Таймер 1 работает на timer_tick.
  19. Необязательно, например натяжные потолки жёсткими становятся.
  20. Есть термоусадочные трубки, они для обжатия. А если нужно внутри металлическую трубку изолировать, что для этого есть? Идеально бы нечто противоположное термоусадки.
  21. main_TcpNet использую как рекомендует Keil, т.е. в основном цикле программы, реальный период не мерил.
  22. Весь код работы с изернетом взял из примера и как рекомендуют здесь, соответственно передачу начинаю когда tcp_check_send() == true. Величину tcp_max_dsize не превышаю, функция выдаёт 1460, использую 1032 байта. Увеличение памяти не помогает. Наверно это предел.
  23. LPC2478, 12МГц. M = 17, N = 0. Есть простая программа, переработанный пример, по таймеру запускается АЦП, заполняется массив 512 двух байтовых слова и скидывается этот массив по изернет в компьютер. Библиотеку работы с изернет взял в инсталлированном Keil (TCP_ARM_L.lib). Когда частота оцифровки не большая, до 60 кГц программа работает стабильно, поднимаю частоту выше, до 100 кГц, начинаются сбои передачи, программа из библиотеки выходит по ошибке ERR_MEM_LOCK или ERR_MEM_FREE, таймер и АЦП продолжают работать. Сам я никакие динамические массивы не использую, только статика. По осциллографу видно, что запас по времени есть и не маленький, на пин вывожу 1 когда буфер заполнен, а снимаю 1, когда приходит сообщение TCP_EVT_ACK, период стабильной отправки заполненного массива равен 10,9 мс, время от начала передачи до прихода сообщение TCP_EVT_ACK - 240 мкс. При этом сигнала на АЦП нет. При подаче синуса, любой частоты передача прекращается. Стабильность передачи возобновляется только при периоде 16,4 мс. Частота таймера для передачи по изернет 10 мс, минимум рекомендованного. Не понятна зависимость наличия сигнала и периода стабильной передачи. Как заставить программу работать на частоте оцифровке 100 кГц? Правильно я понимаю, если в функцию tcp_callback пришло сообщение TCP_EVT_ACK, то данные отправлены и все буфера освобождены?
  24. Есть в продаже небольшой 15-30х50-100мм тачпед с SPI или I2C интерфейсом? Где найти?