SPI DMA новые функции

victor_pv
Сб 16 мая 2015 г. 20:49
РЕДАКТИРОВАТЬ:
Новые функции интегрированы в последнее обновление репо Роджера.
Проверить .H файл для короткого объяснения параметров и того, что они делают, прямо перед каждой из функций.

********************************************* ************

Роджер,

Я открываю тему для этого, так как мы не обсуждали ее с тех пор, как вы открыли новые форумы.

Я только что вернулся в библиотеку ILI 9163C, которая перенесла, и быстро подумал о функциях DMA, и просто внес небольшое изменение, чтобы позволить выбирать приращение памяти или круговой режим с дополнительным параметром.

Объявления функции выглядят так: /** * @brief Sets up a DMA Transfer for "length" bytes. * * This function transmits and receives to buffers. * * @param transmitBuf buffer Bytes to transmit. If passed as 0, it sends FF repeatedly for "length" bytes * @param receiveBuf buffer Bytes to save received data. * @param length Number of bytes in buffer to transmit. */ uint8 dmaTransfer(uint8 *transmitBuf, uint8 *receiveBuf, uint16 length); /** * @brief Sets up a DMA Transmit for bytes. * * This function transmits and does not care about the RX fifo. * * @param transmitBuf buffer Bytes to transmit, * @param length Number of bytes in buffer to transmit. * @param minc Set to use Memory Increment mode, clear to use Circular mode. */ uint8 dmaSend(uint8 *transmitBuf, uint16 length, bool minc)); /** * @brief Sets up a DMA Transmit for half words. * SPI PERFIPHERAL MUST BE SET TO 16 BIT MODE BEFORE * * This function transmits and does not care about the RX fifo. * * @param data buffer half words to transmit, * @param length Number of bytes in buffer to transmit. * @param minc Set to use Memory Increment mode (default if blank), clear to use Circular mode. */ uint8 dmaSend(uint16 *transmitBuf, uint16 length, bool minc);

Rogerclark
Пн 18 мая 2015 г., 21:16
Виктор,

Звучит отлично.

Интересно, сможет ли один или два человека проверить это, прежде чем я скопирую его в репо?

Спасибо

Роджер

Ахулл
Пн 18 мая 2015 г., 21:23
Rogerclark написал:Виктор,

Звучит отлично.

Интересно, сможет ли один или два человека проверить это, прежде чем я скопирую его в репо?

Спасибо

Роджер

victor_pv
Пн 18 мая 2015 г., 21:53
Этот пигоскоп такой крутой!

Теперь по теме SPI DMA:

Roger, struct spi_dev имеет этот контент: typedef struct spi_dev { 203 typedef struct spi_dev { 204 spi_reg_map *regs; /**< Register map */ 205 rcc_clk_id clk_id; /**< RCC clock information */ 206 nvic_irq_num irq_num; /**< NVIC interrupt number */ 207 } spi_dev;

Rogerclark
Пн 18 мая 2015 г., 22:56
Виктор

Нужны ли нам 3 вещи, а не 2, я думал, что нам нужно устройство DMA, а также номера каналов. (Я не уверен насчет номенклатуры, но я думаю, что вы будете знать, о чем я)

victor_pv
Пн 18 мая 2015 г., 23:26
Роджер, я знаю, что вы имеете в виду, контроллер DMA и номер канала.
Я думаю, ты прав.
Мне нужно проверить, я знаю, что у CB MCU есть только 1 контроллер, но у R, V и Z может быть два, поэтому нам тоже нужно это знать.
Поскольку существует только несколько устройств SPI, это должно занять всего 6 или 9 байтов из оперативной памяти, которые мы должны быть в состоянии уйти с. Специально, поскольку SPI2 или SPI3 не создаются по умолчанию.

Rogerclark
Пн 18 мая 2015 г. 11:40
Привет, Виктор

Да. Это то, что я имею в виду ;-)

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

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

В DMA_F1.C у него есть функция, называемая proconfig_check, которая вызывает целую серию подгрупп

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

Но я думаю, что это что -то для будущего, и просто для того, чтобы начать, мы должны включить контроллер DMA, а также каналы TX и RX в структуре

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

Ахулл
Вторник 19 мая 2015 г. 13:45
@Victor - где мне найти ваши обновленные либера?

victor_pv
Вторник 19 мая 2015 г. 13:57
У меня возникают некоторые проблемы с Resynchronizing Github с репо Роджером, как только я все это разобрался, я пришлю ему привлечение к соответствующим файлам.
Между тем у моей вилки есть последние модификации, которые я сделал для графических библиотек и функции SPI:
https: // github.com/vicepropv/arduino_stm32

Это также включает в себя Freertos 8.2.1. и COOS 1.1.6 и 1.12 (самая старая версия), которые, кажется, работают нормально. Есть один пример, который использует дисплей ILI9163, но может быть очень легко адаптирован к любому другому дисплею.
Может быть чем -то полезным для управления несколькими задачами в проекте осциллографа.

Мадиас
Вторник 19 мая 2015 г. 13:58
@ahull: Я уверен, что они на аккаунте Github Github:
https: // github.com/vicepropv/arduino_stm32
редактировать: ОК, Виктор был быстрее :)

victor_pv
Вторник 19 мая 2015 г. 15:58
Потянуть их лучше от https: // github.com/vicopropv/stm32f1_modified
Я пытаюсь пересмотреть свой другой репо с Роджером и только загружать протестированные вещи для притяжения, внося изменения в _modified.

joevpt
Вторник 13 декабря 2016 г. 16:51
Получение много предупреждений об использовании устаревших звонков в SPI.c Мой проект использует Ethernet_stm LIB, который использует SPI LIB, который, в свою очередь, использует DMA LIB. Библиотека DMA объявила ряд вызовов как устаревшие, поэтому вызовы SPI должны быть обновлены.

Если бы я знал, как это сделать, я бы с радостью добровольно добровольно, но знание своих ограничений - это добродетель в этом случае. DMA - это немного загадка для меня (я знаю, что означают буквы). Я вижу в SPI.h, что избавиться от устаревших звонков находится в списке чего -то.. Не думай, что это будет в ближайшее время ?

Rogerclark
Вт 13 декабря 2016 г., 19:32
Можете ли вы опубликовать свой вывод словесного компиляции, показывающий, что устарело

Стивестронг
Ср 14 декабря 2016 г. 9:25 утра
Мне известно об этих сообщениях, я попытался заменить устаревшие функции, но это включает в себя больший размер кода/оперативной памяти и более длительное время выполнения.
Поскольку установка DMA в функциях отправки/передачи SPI должна быть быстрой (что в настоящее время имеет место), я скорее склонен к удалению ключевого слова «устаревшего» из источников, чтобы компилятор больше не предупреждал.
Как ты думаешь, Роджер? Будет ли это смысл?

Mrburnette
Ср 14 декабря 2016 г. 15:42
Я со Стивом на этом.
Я часто просто использую #pragma ... Чтобы закрыть шум. Есть полный списокНастройки GCC Pragma это можно включить в исходном коде.

Этот должен отключить амортизированные предупреждения: #pragma GCC diagnostic ignored "-Wdeprecated-declarations"

Стивестронг
Ср 14 декабря 2016 г. 18:59
В этом случае эта линия следует удалить/прокомментировать.

joevpt
Чт 15 декабря 2016 г., 22:31
Спасибо, Стив. Я сделал, как вы предложили.