"бит" SPI PINS STM32F1

Александрос
Пн, 09 октября 2017 г. 10:09
Привет ,
У меня есть проект, который я использую SPI1 для передачи данных ,
PA7 MOSI1
PA6 MISO1
PA5 SCK1
PA4 NSS1

Плата, которую я использую, трудно добраться до моси PIN PA7, в основном она не разбита нигде, где мне придется паять за MCU, у меня есть доступ к PA6, хотя ,
Поэтому мне интересно, прежде чем я сделаю следующий ход, есть ли какой -нибудь быстрый и простой способ кусать данные от MOSI1 до MISO1 ,

Пито
Пн, 09 октября 2017 г. 10:12
Вы можете битьбанг любые булавки с Bitbanged SPI.

Александрос
Пн, 09 октября 2017 г. 10:15 утра
Я думаю, это надежный ответ :)
Любой пример сэкономит мне тонны часов

Пито
Пн, 09 октября 2017 г. 10:35
Чтобы сэкономить 4 тонны вашего времени:
https: // github.com/nickgammon/bitbangedspi

Я использую его с MAX7219 и BluePill, и это работает.

Что -то вроде этого (не проверено таким образом, вы должны потратить несколько фунтов времени, чтобы уточнить): sudo ln -s /opt/local/lib/libusblibusb-1.0.0.dylib /usr/local/lib/libusb-1.0.0.dylib

Александрос
Пн, 09 октября 2017 г. 11:29
Спасибо, чувак, я апрецирован.
Я переношу это в свой код, я посмотрю, как это происходит.

Стивестронг
Пн, 09 октября 2017 г. 11:34
Перед использованием Software SPI, возможно, сначала рассмотреть вопрос о переиздании штифтов SPI, если доступны эти выводы с переигрыванием:
F1_spi1_remap.jpg
F1_spi1_remap.JPG (53.11 киб) просмотрено 551 раз

Дэнниф
Пн, 09 октября 2017 г. 12:12
Есть ли какой -нибудь быстрый и простой способ кусать данные от MoSi1 до MISO1 , Не уверен, что это значит.

Вы, безусловно, можете битбанг любые булавки, но если булавка не направлена, не уверен, лучше ли вместо этого лучше бить, который направляется.

Александрос
Пн, 09 октября 2017 г. 13:02
[Стивестронг - Пн, 09 октября 2017 г. 11:34] - Перед использованием Software SPI, возможно, сначала рассмотреть вопрос о переиздании штифтов SPI, если доступны эти выводы с переигрыванием:
F1_spi1_remap.JPG

NSS не актуален, хотя.
Изображение


В моем случае я хочу PA6 как Моси . Я хочу только отправить данные, альтернативные булавки (PB5, PB4, PB3....) SPI1 не доступен с моим оборудованием . (по крайней мере, не вырвано) ПЛАЗАНСКА.


Только что перенести код без ошибок, я проверю позже, если мои данные проходят через PA6 ..

Стивестронг
Пн, 09 октября 2017 г. 13:21
Этот код использует функцию DigitalWrite () для переключения уровня штифта.
Если скорость не является для вас проблемой, то все должно быть хорошо.
В противном случае вы должны использовать прямые записи памяти, чтобы переключить булавки.

Александрос
Пн, 09 октября 2017 г. 14:58
[Стивестронг - Пн, 09 октября 2017 г. 13:21] - Этот код использует функцию DigitalWrite () для переключения уровня штифта.
Если скорость не является для вас проблемой, то все должно быть хорошо.
В противном случае вы должны использовать прямые записи памяти, чтобы переключить булавки.
Я думаю, что скорость слишком медленная.. : o
Как я могу использовать прямые записи памяти ? любой пример?"

Пито
Пн, 09 октября 2017 г. 15:15
Прокомментируйте все задержки, если вам нужно больше скорости (BitBangedSpi.CPP): 2016-05-20T14:10:56 INFO src/usb.c: -- exit_dfu_mode 2016-05-20T14:10:56 INFO src/common.c: Loading device parameters.... 2016-05-20T14:10:56 INFO src/common.c: Device connected is: F07x device, id 0x20016448 2016-05-20T14:10:56 INFO src/common.c: SRAM size: 0x4000 bytes (16 KiB), Flash: 0x20000 bytes (128 KiB) in pages of 2048 bytes 2016-05-20T14:10:56 INFO src/common.c: Ignoring 4 bytes of 0xff at end of file 2016-05-20T14:10:56 INFO src/common.c: Attempting to write 21708 (0x54cc) bytes to stm32 address: 134217728 (0x8000000) Flash page at addr: 0x08000000 erased Flash page at addr: 0x08000800 erased Flash page at addr: 0x08001000 erased Flash page at addr: 0x08001800 erased Flash page at addr: 0x08002000 erased Flash page at addr: 0x08002800 erased Flash page at addr: 0x08003000 erased Flash page at addr: 0x08003800 erased2016-05-20T14:10:57 INFO src/common.c: Finished erasing 11 pages of 2048 (0x800) bytes 2016-05-20T14:10:57 INFO src/common.c: Starting Flash write for VL/F0/F3 core id 2016-05-20T14:10:57 INFO src/common.c: Successfully loaded flash loader in sram Flash page at addr: 0x08004000 erased Flash page at addr: 0x08004800 erased Flash page at addr: 0x08005000 erased2016-05-20T14:10:59 ERROR src/common.c: flash loader run error 2016-05-20T14:10:59 ERROR src/common.c: run_flash_loader(0x8000000) failed! == -1 stlink_fwrite_flash() == -1

Дэнниф
Пн, 09 октября 2017 г. 15:34
следующее:
packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld: warning: changing start of section .rodata by 4 bytes /packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld: warning: changing start of section .rodata by 4 bytes /packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld: warning: changing start of section .rodata by 4 bytes

Александрос
Пн, 09 октября 2017 г. 18:19
[Пито - Пн, 09 октября 2017 г. 15:15] - Прокомментируйте все задержки, если вам нужно больше скорости (BitBangedSpi.CPP):

Сначала попробуйте использовать этот код, когда вы собираете больше опыта с STM32, вы можете заменить DigitalWrite ()..
Я только что попробовал, я вижу некоторую скорость, но это не проблема.


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

Итак, мой обычный код до бита
packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld: warning: changing start of section .rodata by 4 bytes /packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld: warning: changing start of section .rodata by 4 bytes /packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld: warning: changing start of section .rodata by 4 bytes

Стивестронг
Пн, 09 октября 2017 г., 19:32
Почему ты "изобретаешь колесо"?
У нас уже есть аппаратная библиотека SPI, которая поддерживает DMA: https: // github.com/rogerclarkmelbourne/ ... Спутники/SPI

Насколько я знаю, SPI программного обеспечения (бит-бит) не может работать с DMA.

Вы все еще не упомянули в четком тексте, в чем ваша проблема.
«Это не работает» недостаточно информации.

Александрос
Пн, 09 октября 2017 г. 20:27
Хорошо, я с тобой, могу ли я использовать https: // github.com/rogerclarkmelbourne/ ... Спутники/SPI
и сделать мисо SPI1 (PA6) действовать как моси?
Потому что моя станция микроскопа и припоя готова припаять над MCU The Chang Pa7 :? :?

Rogerclark
Пн, 09 октября 2017 г. 20:54
Ваш MCU действует как мастер или раб?

Вы подразумеваете, что хотите, чтобы MCU использовал рабские соединения.

Вы сами построили оборудование?

Если не... У производителя должна быть веская причина использовать нестандартную конфигурацию PIN -кода

Александрос
Пн, 09 октября 2017 г., 21:17
[Rogerclark - Пн, 09 октября 2017 г. 8:54 вечера] - Ваш MCU действует как мастер или раб?

Вы подразумеваете, что хотите, чтобы MCU использовал рабские соединения.

Вы сами построили оборудование?

Если не... У производителя должна быть веская причина использовать нестандартную конфигурацию PIN -кода
Если я понимаю вопрос, да, мой MCU действует как мастер,
Мне уже удается использовать альтернативные контакты SPI1 PB5, PB4, PB3 и т. Д size_t USBSerial::write(const uint8_t *buffer, size_t size) { unsigned long timeout=millis()+5; if(hUsbDeviceFS.dev_state == USBD_STATE_CONFIGURED) { while(millis()

Rogerclark
Пн, 09 октября 2017 г., 21:38
ХОРОШО.

Что такое оборудование ?

Александрос
Пн, 09 октября 2017 г. 9:51 вечера
Китайский контроллер для 3D -принтера

Rogerclark
Пн, 09 октября 2017 г. 11:37
ХОРОШО

Стивестронг
Вт 10 октября 2017 г. 8:42
Позвольте мне завершить:
Вы хотите использовать нестандартную конфигурацию SPI: вывода данных MOSI на PIN-код MISO.
Это означает, что вы должны забыть любое доступное аппаратное решение, забудьте об аппаратной библиотеке SPI и Забудьте DMA.

Доступное решение: Software SPI (бит -границы), используя доступную библиотеку Soft SPI - в этом случае тоже забудьте DMA.
Если вы не разлагаете каждый бит байта данных на отдельные 16 -битные данные в памяти и не запускают DMA таймером, чтобы напрямую отправить разложенные 16 бит в регистр BSRR. Это сложно, и накладные расходы для подготовки разлагаемых данных в памяти будут стоить вам больше времени, чем просто набрать данные на периферийные устройства.

Для быстрого вывода GPIO с использованием прямых доступа к регистрации см
- эта ветка: http: // stm32duino.com/viewtopic.PHP?F = 18&t = 303
- или проверьте доступное решение (16 -битная параллельная ЖК -библиотека): https: // github.com/stevstrong/adafruit_ ... M32.H#L116

Пито
Вт 10 октября 2017 г. 13:43
Установите/прочитывают булавки GPIO:
packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld: warning: changing start of section .rodata by 4 bytes /packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld: warning: changing start of section .rodata by 4 bytes /packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/../lib/gcc/arm-none-eabi/4.8.3/../../../../arm-none-eabi/bin/ld: warning: changing start of section .rodata by 4 bytes

Racemaniac
Вт 10 октября 2017 г. 14:48
Давайте, возможно, начнем с основ, так как я не думаю, что ОП понимает, что такое битбанг

@OP: Стандартные контакты периферийного устройства, подобного порту SPI, - это те булавки, потому что микроконтроллер имеет встроенное аппаратное обеспечение, которое позволяет вам общаться через этот протокол в быстром & эффективный способ.
Битбанг означает, что вы не используете такое оборудование, а скорее реализуете этот протокол, используя простые манипуляции с портами микроконтроллера. Это медленнее & менее эффективно (это стоит микроконтроллера намного больше работы для достижения того же самого)).
По мере того, как вы переходите от использования встроенного периферического на что -то совершенно индивидуальное, нет режима «на полпути». Вы не можете использовать периферийную машину по умолчанию для всего, за исключением штифта MOSI, который вы затем "Bitbang".
Вы либо битбанг все это, либо вообще ничего.
Поэтому, если вы решите использовать SPI на своей 3D -плате принтеров на булавках, не поддерживаемых аппаратным обеспечением STM32, вы действительно можете прибегнуть к тому, чтобы прибегнуть его к другим выводам. И с этого момента, не имеет значения, сохраняете ли вы большинство контактов порта SPI STM32 или просто перейдите к совершенно разным булавкам. Как только вы больше не используете булавки по умолчанию, вы больше не можете использовать встроенный порт SPI и собираетесь на пользовательскую реализацию для всего.

Я надеюсь, что это очистит.

Александрос
Вт 10 октября 2017 г. 15:04
Совершенно ясно, SPI это поезд в стандартных рельсах, но я должен взять такси...