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

Тема:

  1. Начинающий Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    57
    Сообщений
    27.302

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

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



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

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

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

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

  2. Старый знакомый
    Автор темы
    Аватар для l3VGV
    Регистрация
    02.05.2009
    Адрес
    Псков
    Возраст
    38
    Сообщений
    715

    По умолчанию 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. Начинающий Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    57
    Сообщений
    27.302

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

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

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

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

  4. Старый знакомый
    Автор темы
    Аватар для l3VGV
    Регистрация
    02.05.2009
    Адрес
    Псков
    Возраст
    38
    Сообщений
    715

    По умолчанию 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. Начинающий Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    57
    Сообщений
    27.302

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

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

  6. Старый знакомый
    Автор темы
    Аватар для l3VGV
    Регистрация
    02.05.2009
    Адрес
    Псков
    Возраст
    38
    Сообщений
    715

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

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

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

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

  7. Начинающий Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    57
    Сообщений
    27.302

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

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

  8. Старый знакомый
    Автор темы
    Аватар для l3VGV
    Регистрация
    02.05.2009
    Адрес
    Псков
    Возраст
    38
    Сообщений
    715

    По умолчанию 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

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

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

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

Ваши права

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