[Решен] SPI.Передача байтовых сбоев F407VET6?

Беннебой
Солнце 14 января 2018 г., 16:07
Сегодня я потратил некоторое время на то, чтобы переносить очень сокращенную версию моей системы манометра автомобиля на черную плату F407VET6, что у меня есть.

Мне удалось получить общение SPI с SSD1306, работающим нормально, и могу рисовать GFX, отображать шрифты и т. Д.

У меня есть какой -то пользовательский код, который инициализирует датчик температуры SPI MAX31856, и, хотя это прекрасно работает на Maple Mini, используя Core Rogers, он висит при запуске против STM32Generic.

Теперь я предполагаю, что это, скорее всего, я буду делать что -то глупое, поэтому я включил код ниже.

Повес. Чтобы исключить некоторую проблему с провалом кода, когда отсутствует устройство, я удалил устройство на моей реализации клена, и он не сбивается с ударом там.

Любые указатели?

Определения (OLED & Макс делятся тем же автобусом).
// HW SPI #define OLED_MOSI PA7 //4 // SPI_MOSI #define MAX_MISO PA6 //5 // SPI MISO #define OLED_CLK PA5 //6 // SPI_SCK #define MAX_CS PB10 //7 #define NumRegisters 10

Беннебой
Солнце 14 января 2018 г. 16:19
Некоторый диаг с серийным выходом указывает на то, что он висит в точке первого SPI.передача
SPI.transfer(Address);

Беннебой
Солнце 14 января 2018 г., 21:57
Полный код здесь -> https: // github.com/bennehboy/lrduino --- f407vet6

Неудобная линия 83 в .Ино, чтобы показать подвеску.

Мне также весело получать SDFAT на работу:/

Беннебой
Пн 15 января 2018 г. 14:21
Ну, кажется, что библиотека Adafruit SSD1306 не хорошо играет с транзакциями SPI. Почему совместно с другим устройством на той же шине с использованием транзакций это должно работать на ядре Rogers, но не на STM32GERIERIER.

Попробую водить устройство на второй автобусе, чтобы увидеть, что произойдет... Я попытался заставлять библиотеку использовать транзакции, но я думаю, что перерывы по последовательностям init из -за того, как она была написана. - т.е. не стоит.

Пито
Пн 15 января 2018 г. 14:44
Транзакции SPI - самые простые, которые вы можете себе представить. Он просто выпускает 8 бит и читает 8 бит в. Это все.
Единственные проблемы, которые я могу себе представить с помощью SPI с двумя или более разными чипсами, висящими на нем:
1. Неправильный чип выбирает манипуляции (вы активируете оба чипа во время транзакции)
2. Чипсы имеют разные тактовые скорости MAX SPI, вы не изменяете тактовые скорости при доступе к фишкам
3. Чипсы имеют разные режимы краев часов SPI (существуют 4 режима)
4. провода слишком длинные, вы должны обеспечить некоторое сопоставление импеданса..

Стивестронг
Пн 15 января 2018 г. 14:47
Ну, если он работает с ядром Роджера, почему бы не использовать его? :?:
Предпочтительнее, вы также можете попробовать мой репо, Это немного дальнейшее развитие в отношении F4.

Беннебой
Пн 15 января 2018 г. 14:55
[Стивестронг - Пн 15 января 2018 г. 14:47] - Ну, если он работает с ядром Роджера, почему бы не использовать его? :?:
Он работает с ядром Роджера на Maple Mini, я пытаюсь заставить это работать на черном F407Vet6. Я дам и Роджеру, и вашему ядру попробовать против 407, чтобы увидеть, как они проходят.

Что касается проблемы, то это не только случай, когда код продолжает работать, но ожидаемая функция не удается, 407 замков сильно, поэтому я думаю, что где -то есть невозможное исключение, eithe в ядре или мой код. Я изо всех сил пытаюсь добиться успеха : D

Беннебой
Пн 15 января 2018 г. 15:05
Обе библиотеки Adafruit (SSD1306 & GFX) Нужна переработка, чтобы функционировать на ядро ​​Rogers для Generic F407VE - Нет провода.h или wiring_private.h (не то, что необходим провод! И я ленивый)

Пальцы скрещены для Stevestrongs.

Беннебой
Пн 15 января 2018 г. 15:14
Нет wiring_private в вашем, прокомментировал его и получите нагрузку на исключения макросов.

Компиляции и загрузки, но нет SPI или серийного вывода из 407 - хотя я ожидаю, что мне может потребоваться убедиться, что определения GPIO верны.

...Потеряя волю к жизни... : D

Стивестронг
Пн 15 января 2018 г. 15:17
Здесь вы можете увидеть, что должно работать на моем ядре Libmaple F4: http: // stm32duino.com/viewtopic.PHP?F = 39&T = 1976
(I2C также был реализован на универсальный F4 Mini, который тоже должен работать на черном F4).

Какие макросы бросают исключения?

П.S: Стандартный порт SPI, созданный на F4, SPI3.
И серийный всегда USB -сериал, сериал 1 всегда UART 1, и т. Д.

Беннебой
Пн 15 января 2018 г. 15:30
TBH Это, вероятно, слишком много кроличья дыра - я, вероятно, откажусь от использования 407.

Беннебой
Пн 22 января 2018 12:17
Я смог заставить MAX31856 работать на отдельном канале SPI для моего OLED.

Я хотел бы знать, что именно разбивает ядро ​​(STM32GENERIER - Даниэль) при попытке использовать транзакции с разными режимами/скоростями на одном и том же автобусе в быстрой последовательности.

Теперь, чтобы заставить SDIO работать...

Беннебой
Пн 22 января 2018 г., 13:17
Так что, похоже, не все SD -карты совместимы, старая карта, которую я использовал, просто отлично с читателем SPI не работала с Vet6, попробовал другую карту и теперь работал SDIO.

: D : D