Страница 6 из 6 Первая ... 456
Показано с 101 по 113 из 113

Тема: Помогите выбрать stm32 Discovery или иную хорошую демо плату

  1. #101
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    62
    Сообщений
    37,535

    По умолчанию Re: Помогите выбрать stm32 Discovery или иную хорошую демо плату

    Цитата Сообщение от l3VGV Посмотреть сообщение
    Помню что русский не родной. Оно это обращение к неодушевленному предмету. В часности к чипу. Или в данном случае уместнее к софту?
    И к чипу, и к софту.



    Цитата Сообщение от l3VGV Посмотреть сообщение
    Никаких преобразований нет вообще, простой приём в буфер.
    Тогда оно там лежит совершенно линейно.

    Цитата Сообщение от l3VGV Посмотреть сообщение
    Функция, которая якобы блокирующая, возвращает управление до того как закончила дела. Такой смысл.
    Снимать CS надо по концу приема (причем что при приеме, что при передаче - сниятие его по концу передачи, если мы толко передаем, этот наиболее типичная ошибка).
    Насколько я помю, в халовской функции приема, сделано примерно так:
    while (не конец приема){
    ожидаем конца предыдушего приема;
    принимаем следующий байт;
    }

    Проверь, что после последнего байта - оно опять ждет конца приема, или добавь его сам, преже чем CS снимать.

    P.S. А вообще, такие вещи пишутся в пять строчек без хала. Хал можно использовать только для инициализации периферии.
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  2. #102
    Завсегдатай
    Автор темы
    Аватар для l3VGV
    Регистрация
    02.05.2009
    Адрес
    Псков
    Возраст
    43
    Сообщений
    1,020

    По умолчанию Re: Помогите выбрать stm32 Discovery или иную хорошую демо плату

    Цитата Сообщение от Alex Посмотреть сообщение
    Тогда оно там лежит совершенно линейно.
    Сейчас посмотрел отладчиком и логическим анализатором, по шагам. Первые несколько приемов - идеально(несколько это если повезет, а бывает и так что только первый нормально а дальше сразу конфуз). А потом появляется несколько лишних тактов при приеме, и всё ломается.


    Цитата Сообщение от Alex Посмотреть сообщение
    Проверь, что после последнего байта - оно опять ждет конца приема, или добавь его сам, преже чем CS снимать.
    Понял, погляжу.


    Цитата Сообщение от Alex Посмотреть сообщение
    P.S. А вообще, такие вещи пишутся в пять строчек без хала. Хал можно использовать только для инициализации периферии.
    С халом крайне удобно. У меня тут 4 разные платы, перенос с одной на другую дело 1й минуты. Да и не ожадл я от него такой засады, на ровном месте.

    ---------- Сообщение добавлено 12:37 ---------- Предыдущее сообщение было 11:17 ----------

    Всётаки ошибка в либах. Хотя какая разница где? Но в либах тоже крайне показательно. Уже сколько лет этому всему, а до сих пор.

    Оригинальный код
    Код:
        while(hspi->RxXferCount > 0U)
        {
          /* Check the RXNE flag */
          if(__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE))
          {
            /* read the received data */
            (* (uint8_t *)pData)= *(__IO uint8_t *)&hspi->Instance->DR;
            pData += sizeof(uint8_t);
            hspi->RxXferCount--;
          }
    
          else
          {
            /* Timeout management */
            if((Timeout == 0U) || ((Timeout != HAL_MAX_DELAY) && ((HAL_GetTick()-tickstart) >=  Timeout)))
            {
              errorcode = HAL_TIMEOUT;
              goto error;
            }
          }
        }
    В самом начале часто принимает 1 лишний байт.



    Исправленный код, работает надежно:

    Код:
        while(hspi->RxXferCount > 0U)
        {
          /* Check the RXNE flag */
          while(! __HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)){};
            /* read the received data */
            (* (uint8_t *)pData)= *(__IO uint8_t *)&hspi->Instance->DR;
            pData += sizeof(uint8_t);
            hspi->RxXferCount--;
        }


    Общее мнение о stm32 - крайне отрицательное. Не зря оно так дёшево стоит.

    ---------- Сообщение добавлено 13:08 ---------- Предыдущее сообщение было 12:37 ----------

    Чтобы было ещё смешнее - работоспособность зависит от ключей оптимизации.

    Ура халописателям.

  3. #103
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    62
    Сообщений
    37,535

    По умолчанию Re: Помогите выбрать stm32 Discovery или иную хорошую демо плату

    Цитата Сообщение от l3VGV Посмотреть сообщение
    Общее мнение о stm32 - крайне отрицательное. Не зря оно так дёшево стоит.
    Да не сильно дешевле других.
    Вообще у них дешевые только 103СВ8, и то если его брать у китайцев - потому что он стоит в каждом ст-линке и каждой евалуешн борде, да еще и есть его китайские клоны. Ну и серия Ф0, которая изначально задумана как дешевая.
    Остальные не такие и дешевые.

    ---------- Сообщение добавлено 13:21 ---------- Предыдущее сообщение было 13:19 ----------

    Цитата Сообщение от l3VGV Посмотреть сообщение
    Ура халописателям.
    А кто тебя заставляет его использовать? Ты еще скажи Кубом все нагенерить
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  4. #104
    Завсегдатай
    Автор темы
    Аватар для l3VGV
    Регистрация
    02.05.2009
    Адрес
    Псков
    Возраст
    43
    Сообщений
    1,020

    По умолчанию Re: Помогите выбрать stm32 Discovery или иную хорошую демо плату

    Цитата Сообщение от Alex Посмотреть сообщение
    А кто тебя заставляет его использовать? Ты еще скажи Кубом все нагенерить
    ну да, всё ради него родненького. На данном этапе для меня это наиболее продуктивно. Я сейчас прорабатываю всякие базовые варианты своих поделий.

    И вот заодно шишки. Получается бесценный опыт. Некоторые идеологические моменты совсем не радуют. То i2c кривое, тот у spi библиотеки корявые.


    Приятно что я не один такой. Теперь зная в чем проблема, можно её и выгуглить. Это горький сарказм. Т.е. я сначала сам разобрался а теперь и гугол помогает.
    https://community.st.com/s/question/...buffer-shifted


    Цитата Сообщение от Alex Посмотреть сообщение
    да еще и есть его китайские клоны
    Да там местами просто совсем неприличные цены, типа $0.3 за 401е.

    ---------- Сообщение добавлено 19:52 ---------- Предыдущее сообщение было 13:56 ----------

    Какого черта вообще оно так реализовано. Что, нельзя было добавить счетчик прямо внутрь переферии и потом принимать/отправлять строго сколько указано?

    Вобщем надежной работы SPI добиться крайне не просто. Есть понимание что код который крутит вечный цикл в ожидании регистра, это вообще не самое надежное что может быть. А если у нас ещё и прерывания в системе есть?

    Количество вопросов в сети связанных с тем что принимает больше, что в FIFO зацикленная дич и прочее, их миллион.


    Цитата Сообщение от Alex Посмотреть сообщение
    Проверь, что после последнего байта - оно опять ждет конца приема, или добавь его сам, преже чем CS снимать.
    Тама внутри HAL_SPI_Receive есть такое, я его немного модифицировал. Исследование показали, что если после чтения последнего входа, сразуже не погасить SPI, и оно успеет хоть битик втиснуть, то дальнейшее выключение/включение уже ничего не даст - оно будет продолжать принимать в уже сдвинутый регистр. Преждевременные оптимизации ихнее всё.

    Нужно дождаться приёма, и сразуже выключить. А потом ещё раз подождать и прочитать.


    Код:
    volatile uint8_t ttt;
    
    
      /* Check the end of the transaction */
      if((hspi->Init.Mode == SPI_MODE_MASTER)&&((hspi->Init.Direction == SPI_DIRECTION_1LINE)||(hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY)))
      {
        /* Disable SPI peripheral */
        __HAL_SPI_DISABLE(hspi);
    
    	  while(!__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)){};
    	  ttt = *(__IO uint8_t *)&hspi->Instance->DR;
      }
    Последний раз редактировалось l3VGV; 17.08.2019 в 20:55.

  5. #105
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    62
    Сообщений
    37,535

    По умолчанию Re: Помогите выбрать stm32 Discovery или иную хорошую демо плату

    Цитата Сообщение от l3VGV Посмотреть сообщение
    Вобщем надежной работы SPI добиться крайне не просто.
    Ну не знаю, у меня больше десятка разных серийных девайсов используют по 1-2 SPI, прием-передача, поллингом и ДМА.
    Проблем не наблюдал.
    Процы L151, L452, L476, F405, F407, F427, F722, F767.
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  6. #106
    Завсегдатай
    Автор темы
    Аватар для l3VGV
    Регистрация
    02.05.2009
    Адрес
    Псков
    Возраст
    43
    Сообщений
    1,020

    По умолчанию Re: Помогите выбрать stm32 Discovery или иную хорошую демо плату

    Дма тоже попробовал. После того как ваш совет реализовал, для сравнения посмотрел что делает само железо. Оно тоже лишний байт в конце принимает и не глючит совершенно. Только с блокирующим пулингом такой поворот получился.

    ---------- Сообщение добавлено 18.08.2019 в 00:11 ---------- Предыдущее сообщение было 17.08.2019 в 23:30 ----------

    Цитата Сообщение от Alex Посмотреть сообщение
    Ну не знаю, у меня больше десятка разных серийных девайсов используют по 1-2 SPI, прием-передача, поллингом и ДМА.
    С этим пока разбираюсь. Опрашиваемое устройство выдает crc8 последним байтом, но в его вычисление оно включает как собственно переданные данные так и принятые в этом кадре команды. Пока сделал вычисление с табличкой и на процессоре. Совпадает.

  7. #107
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    62
    Сообщений
    37,535

    По умолчанию Re: Помогите выбрать stm32 Discovery или иную хорошую демо плату

    Цитата Сообщение от l3VGV Посмотреть сообщение
    Оно тоже лишний байт в конце принимает
    Никогда не видел "лишних байтов".
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  8. #108
    Завсегдатай
    Автор темы
    Аватар для l3VGV
    Регистрация
    02.05.2009
    Адрес
    Псков
    Возраст
    43
    Сообщений
    1,020

    По умолчанию Re: Помогите выбрать stm32 Discovery или иную хорошую демо плату

    Запрашиваю приём 4 байт, оно в приемный буфер кладёт 4, а 5й видно по логическому анализатору, его выбрасывает.

    ---------- Сообщение добавлено 19:04 ---------- Предыдущее сообщение было 11:05 ----------

    https://www.pjrc.com/store/teensy40.html

    600МГц arm-7 2 usb2 HS с интегрированными phy . $11 за чип в рознице. ого!


    https://www.nxp.com/products/process...umentation_Tab

  9. #109
    Завсегдатай
    Автор темы
    Аватар для l3VGV
    Регистрация
    02.05.2009
    Адрес
    Псков
    Возраст
    43
    Сообщений
    1,020

    По умолчанию Re: Помогите выбрать stm32 Discovery или иную хорошую демо плату

    Поставил эту новую КубИде. Оно обновило прошивку китайского стлинка, и SWO заработало!

  10. #110
    Завсегдатай
    Автор темы
    Аватар для l3VGV
    Регистрация
    02.05.2009
    Адрес
    Псков
    Возраст
    43
    Сообщений
    1,020

    По умолчанию Re: Помогите выбрать stm32 Discovery или иную хорошую демо плату

    Аказывается то, как оно можно легко сдампить прошивку с F1
    https://blog.zapb.de/stm32f1-exceptional-failure/

    Как спалить ногу контроллеру, не затронуть всё остальное? Если я объявлю пин выходом, выставлю на него лог 0 и подам снаружи 3.3В.
    или объявлять его входом и подать снаружи напряжение ниже 0 или выше питания, в надежде что в к.з. уйдут защитные диоды?
    Последний раз редактировалось l3VGV; 13.05.2020 в 21:20.

  11. #111
    Завсегдатай
    Автор темы
    Аватар для l3VGV
    Регистрация
    02.05.2009
    Адрес
    Псков
    Возраст
    43
    Сообщений
    1,020

    По умолчанию Re: Помогите выбрать stm32 Discovery или иную хорошую демо плату

    Цитата Сообщение от Wired Посмотреть сообщение
    в конце концов, лепил из STDperflib в VSCode и компилил KEILом им-же прошивал и дебажил.

    VSCode как редактор, мне ну очень понравился. Особенно если с Кейлом сравнивать, и прости господи с еклипсами разньіми.
    Всё так, поначалу попробовал прямо во взрослой студии, но потом всёравно оставил VSCode, а полноценный дебаг всёравно в CubeIDE. Там всётаки значительно больше полезных отладочных фич.


    Как за 20 лет в еклипсе так и не смогли в нормальный редактор, это тема на докторскую, ясчитаю.

  12. #112
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    62
    Сообщений
    37,535

    По умолчанию Re: Помогите выбрать stm32 Discovery или иную хорошую демо плату

    Цитата Сообщение от l3VGV Посмотреть сообщение
    а полноценный дебаг всёравно в CubeIDE. Там всётаки значительно больше полезных отладочных фич.
    Больше чем в Кейле?
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  13. #113
    Завсегдатай
    Автор темы
    Аватар для l3VGV
    Регистрация
    02.05.2009
    Адрес
    Псков
    Возраст
    43
    Сообщений
    1,020

    По умолчанию Re: Помогите выбрать stm32 Discovery или иную хорошую демо плату

    Вотбы кто рассказал! Я заленился, так и не поставил.

Страница 6 из 6 Первая ... 456

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •