Перейти к содержанию

tw1911

Members
  • Постов

    38
  • Зарегистрирован

  • Посещение

Информация

  • Город
    Воронеж

Электроника

  • Стаж в электронике
    1-2 года
  • Сфера радиоэлектроники
    микроконтроллеры
  • Оборудование
    с1-55, мультиметр, станция с феном

Посетители профиля

1 340 просмотров профиля

Достижения tw1911

Новобранец

Новобранец (2/14)

  • 10 постов на форуме
  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

2

Репутация

  1. tw1911

    CubeHAL SPI и LIS3DH

    Нашел я в чем дело. В общем не смотря на то, что рекомендуют для данного акселерометра заводить CPOL=1 и CPHASE = 1, почему то через HAL оно отлично работает и CPOL=0 и CPHASE = 0. Соответственно никакие таймауты, задержки не нужны. Минимальный код: uint8_t SPI_Out[2] = {0x8F,0x00}; uint8_t SPI_In[2]; HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_RESET); HAL_SPI_TransmitReceive(&hspi1, SPI_Out, SPI_In, 2, 5); HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_SET); UPDATE: проверил на SPL, так же работает независимо от CPLO-CPHA. Очень странное для старожила поведение. Увижу еще раз такое - будет жалоба администрации. Я Вас не оскорблял. Переход на личности - это как раз отличный показатель мозгов.
  2. tw1911

    CubeHAL SPI и LIS3DH

    Да было бы чем посмотреть - давно бы посмотрел. У меня есть есть с1-55, но вряд ли на нем такое увидишь.
  3. tw1911

    CubeHAL SPI и LIS3DH

    Так, вижу у Вас другой акселерометр. Я посмотрел, даже на форумах СТ есть несколько вопросов по данным аселям, и одни вопросы, ответов нет. Не порядок.
  4. tw1911

    CubeHAL SPI и LIS3DH

    Хосспади, да уймись ты. Далал я так, не работает. А Вы не могли бы выложить целый проект или хотя бы файл куба что я мог настройки SPI проверить, может тут собака порылась?
  5. Про помидорки тут выше писали, в моей семье почти такая же шутка есть, только про яблочки. Раньше, когда сад давал много яблок, их складывали на зиму в подвал и ели только те, которые начинали портиться. В результате жрали только испорченные яблоки...
  6. tw1911

    CubeHAL SPI и LIS3DH

    А задержки в 400мс ему типа не хватает?
  7. tw1911

    CubeHAL SPI и LIS3DH

    У меня stm32f407i-disco. Могу файлик куба выложить. Но тактирование у меня от внешнего 8Мгц кварца. Мне правда кажется, что вы не совсем понимаете мою проблему. У меня как бы не совсем передача не работает. У меня она работает просто только после того, как я хоть что нибудь передам на аксель и дерну CS. uint8_t SPI_Out[2] = {0x8F,0x00}; uint8_t SPI_In[2]; uint8_t dummyAdr = 0xFF; HAL_Delay(400); if(HAL_SPI_GetState(&hspi1)==HAL_SPI_STATE_READY){ HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_RESET); HAL_SPI_Transmit(&hspi1, &dummyAdr, 2, 100); HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_RESET); HAL_SPI_TransmitReceive(&hspi1, SPI_Out, SPI_In, 2, 100); HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_SET); } К примеру вот такой код отлично работает при любых настройках. Но мне нужна правда. Или место в доках, где написано что оно должно работать именно так, ну что то такое, что объясняет происходящее. А то мне как то боязно двигаться дальше без четкого понимания происходящего. SPI_HAL.ioc UPD Проверил и с дефолтной настройой тактирования от встроенного RC - та же песня. UPD2 Проверил то же самое с DMA. Все так же.
  8. tw1911

    CubeHAL SPI и LIS3DH

    Слушайте, как Вы написали один хрен не работает.
  9. tw1911

    CubeHAL SPI и LIS3DH

    Я не совсем понимаю о какой предделителе идет речь в ссылке. Если об BaudRatePrescaler, то нет, это не мой случай. В общем пока получается так. Первый раз отправляем хоть что то. Потом отправляем нормальный адрес и считываем.
  10. tw1911

    CubeHAL SPI и LIS3DH

    Вот так в приемном буфере будет FF,FF. А вот если написать HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_RESET); HAL_SPI_TransmitReceive(&hspi1, SPI_Out, SPI_In, 2, 100); HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_SET); //в этом местее FF,FF HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_RESET); HAL_SPI_TransmitReceive(&hspi1, SPI_Out, SPI_In, 2, 100); HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_SET);//а вот тут FF,3F Что то совсем непонятное(
  11. tw1911

    CubeHAL SPI и LIS3DH

    Так то оно так, но в данном конкретном случае как раз первый байт содержит команду, и мне абсолютно без разницы что там содержится в ответе, а вот второй передают что угодно, но принимать в это время должен данные из регистра WHO_AM_I. Но почему то оно не работает так первый раз. А второй раз работает. Причем паузу в разных местах я пробовал вставлять вплоть до секунды, и это не дает никакого результата.
  12. tw1911

    CubeHAL SPI и LIS3DH

    В даташите нет ничего про паузу. Рисунок же есть. К том же через SPL все и без паузы работает.
  13. tw1911

    CubeHAL SPI и LIS3DH

    Ну это, я передаю сначала адрес, там 8F(0F|1000000) соответственно в ответе будет FF, а когда я толкаю второй байт(00), в ответе должна быть по идее содержимое регистра. Разве не так? Вроде бы рисунок 7 на странице 23 к мануалу акселерометра. Это для того, что бы не менять размер все время и не ошибаться все время.
  14. tw1911

    CubeHAL SPI и LIS3DH

    Да так то же не работает. На самом деле, если написать HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_RESET); HAL_SPI_TransmitReceive(&hspi1, SPI_Out, SPI_In, sizeof(SPI_In), 100); HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_RESET); HAL_SPI_TransmitReceive(&hspi1, SPI_Out, SPI_In, sizeof(SPI_In), 100); HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_SET); И поставить бряк в 3 и 6 строки, то в первом бряке будет значение FF,FF, а во втором FF,3F, то есть по идее то что надо. Но какого оно так работает вообще не понятно. UPDATE В общем опытным путем установил, что оно работает, если в отдельном CS ON-OFF просто передать на чип хоть что нибудь. Но все равно, может кто нибудь объяснить что это ???
  15. tw1911

    CubeHAL SPI и LIS3DH

    Да так то он работает. и делал я так же. Просто хочу перевести это все на HAL, а тут грабли. Самое забавное, что с DMA оно вроде бы работает. Но как то странно, почему то CS наоборот работает. Короче надо сначала с базовым SPI разобраться. Может кто то подскажет какие особенности работы или скинет рабочий пример?
×
×
  • Создать...