SPI SetBitOrder - по умолчанию установлено в LSBFirst

Вассилис
Пн 22 июня 2015 г. 20:14
Я включил SPI_DEBUG в SPI.Файл CPP (arduino_stm32 \ stm32f1 \ libraries \ spi \ src \ spi.CPP) и я заметил, что по умолчанию включено Lsbfirst.
spi_master_enable (0,0,896)

Когда я отправил команду: SPI.setbitOder (msbfirst); Вывод отладки был:
Порядок бита установлен на 1
spi_master_enable (0,0,768)


А VS1003B (VS1053B), а Ethercard библиотека, ILI9341 ЖК -дисплей и SSD1306 OLED Используйте MSBFirst.

Как вы думаете, это хорошая идея, чтобы установить setbitorder (msbfirst) По умолчанию в библиотеку SPI во время инициализации SPI <SPI.начинать()> ?

Rogerclark
Пн 22 июня 2015 11:32
Что такое по умолчанию для AVR ?

Вассилис
Вт 23 июня 2015 г., 4:10
ATMEGA328 SPI по умолчанию сначала использует MSB.
Зарегистрировать SPCR, бит dord = 0 = msb

Atmega328p Страница 172

Rogerclark
Вт 23 июня 2015 г., 4:37 утра
Спасибо

В этом случае мы, вероятно, должны изменить его, чтобы соответствовать AVR (я понятия не имею, почему Leaflabs установили бы по умолчанию другое значение)

Paulrb
Вт 23 июня 2015 г. 13:39
Я второй, Роджер. Поймал меня, пока Вассилис не помог мне эта ветка.

Вассилис
Вторник 23 июня 2015 г. 15:10
Я нашел простое решение. Я не знаю, является ли это правильным файлом для изменения Но это сработало.

Файл Arduino_stm32 \ stm32f1 \ cores \ maple \ wirish_constants.час
Я поменял две линии в перечисление битеозатор . Это делает по умолчанию MSBFirst на портах SPI.

#ifndef _WIRING_CONSTANTS_ #define _WIRING_CONSTANTS_ #ifdef __cplusplus extern "C"{ #endif enum BitOrder { //LSBFIRST = 0, //MSBFIRST = 1 LSBFIRST = 1, MSBFIRST = 0 }; #ifdef __cplusplus } #endif #endif

Мадиас
Вторник 23 июня 2015 г. 15:30
I found a simple solution.

Вассилис
Вт 23 июня 2015 г., 17:25
Привет, Матиас
Я сделаю дополнительные тесты на i2c

Как вы думаете, где у нас будут проблемы с исходным кодом (библиотеки) ?

Мадиас
Вт 23 июня 2015 г., 18:11
Быстрый поиск кода GitHub (я люблю GitHub для этой функции!):
https: // github.com/rogerclarkmelbourne/ ... Q = битмодер
не так меньше файлов используют битуморд....

Вассилис
Вт 23 июня 2015 г., 18:59
Я попробовал библиотеку RTClib для часов DS1307 I2C в реальном времени, и она работает нормально. Нет неисправности.
Я сделаю еще несколько тестов на устройства i2c.

victor_pv
Вт 23 июня 2015 г., 19:48
Мадиас написал:Быстрый поиск кода GitHub (я люблю GitHub для этой функции!):
https: // github.com/rogerclarkmelbourne/ ... Q = битмодер
не так меньше файлов используют битуморд....

Мадиас
Вт 23 июня 2015 г., 8:11 вечера
На arduino wiring_constants: https: // github.com/arduino/arduino/blob ... на Stants.час
enum BitOrder { LSBFIRST = 0, MSBFIRST = 1 };

Ахулл
Вт 23 июня 2015 г., 20:27
Мадиас написал:На arduino wiring_constants: https: // github.com/arduino/arduino/blob ... на Stants.час
enum BitOrder { LSBFIRST = 0, MSBFIRST = 1 };

victor_pv
Вт 23 июня 2015 г., 21:08
Мадиас написал:На arduino wiring_constants: https: // github.com/arduino/arduino/blob ... на Stants.час
enum BitOrder { LSBFIRST = 0, MSBFIRST = 1 };

Rogerclark
Вт 23 июня 2015 г., 21:38
Я думаю, что это безопаснее, просто чтобы исправить неонициализированные ценности в SPI, а не вносить глобальные изменения, поскольку глобальные изменения часто имеют неожиданные последствия.

Редактировать.

Мне нужно проверить это, чтобы убедиться, что SD Lib все еще работает и т. Д,

Но, насколько я вижу, нам просто нужно инициализировать битузадер
эн.глин. добавить линию в нижней части конструктора, чтобы установить ее. Мы также можем явно установить разделитель часов и режим, даже если инициализированные значения уже могут быть в порядке. Это просто облегчает для тех, кто читает код, чтобы выяснить, каковы значения по умолчанию

(Прокрутите в нижней части этого окна этого кода) SPIClass::SPIClass(uint32 spi_num) { switch (spi_num) { #if BOARD_NR_SPI >= 1 case 1: this->spi_d = SPI1; break; #endif #if BOARD_NR_SPI >= 2 case 2: this->spi_d = SPI2; break; #endif #if BOARD_NR_SPI >= 3 case 3: this->spi_d = SPI3; break; #endif default: ASSERT(0); } bitOrder=MSBFIRST; }

Вассилис
Ср 24 июня 2015 г. 6:33
Rogerclark написал:Я думаю, что это безопаснее, просто чтобы исправить ненициализированные ценности в SPI, а не вносить глобальные изменения, поскольку глобальные изменения часто имеют неожиданные последствия.

Rogerclark
Ср 24 июня 2015 г., 6:39
Василлис

Спасибо за тестирование.

У меня еще не было времени проверить это.

Я буду ждать немного больше отзывов, и если никто не возражает против изменения, я немного натолкнусь с изменением...

Rogerclark
Ср 24 июня 2015 г. 11:36
Теперь я обновил репо с этим изменением