Форум РадиоКот • Просмотр темы - Буфер данных Stm32f103c8
Сообщения без ответов | Активные темы
Страница 1 из 10
[ Сообщений: 200 ]
, , , , ...
Автор
Сообщение
khch
Заголовок сообщения: Буфер данных Stm32f103c8
Добавлено: Пн авг 06, 2018 21:12:36
Карма: -1
Рейтинг сообщений: -10
Зарегистрирован: Ср июл 18, 2018 11:51:59Сообщений: 83
Рейтинг сообщения: 0
Бобры вечер, люди.
Изучаю, только начал. И мне нужна помощь (не такая типа "мля, вот нагугли, кури даташиты...", крили гуглили).
У меня такой вопрос.
Вот есть в библиотеке HAL такой код
Код:
#define RCC ((uint8_t *) 0xcccccccc) // неважен смысл и где это все typedef struct { .... uint8_t GRH; ..... } SPI_TypedefChto_totam; RCC->GRH =.....
И вот я делую точно так же, создаю такую структуру, но внутри массив
typedef struct
{
int Data_buff[512];
}SPI_Data_BuffType;
Дефаню пойнтер с адресом в области SRAM 0x30000000
и хрен там. Мой пойнтер ни видно!!!
С чего бы?
Вернуться наверх
Реклама
Аlex
Заголовок сообщения: Re: Буфер данных Stm32f103c8
Добавлено: Пн авг 06, 2018 21:44:34
Модератор
Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57Сообщений: 4510Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Вы сами поняли, что написали ?
Хоть бы кусок кода, чтоли прилепили ...
Кстати, в коде, который Вы показали из библиотеки, ошибка.
RCC - указатель на
uint8_t , а не на структуру.
Вернуться наверх
Реклама
arkhnchul
Заголовок сообщения: Re: Буфер данных Stm32f103c8
Добавлено: Пн авг 06, 2018 21:48:44
Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53Сообщений: 3092Откуда: москва, уфа
Рейтинг сообщения: 0
Вернуться наверх
Реклама
khch
Заголовок сообщения: Re: Буфер данных Stm32f103c8
Добавлено: Пн авг 06, 2018 21:56:54
Карма: -1
Рейтинг сообщений: -10
Зарегистрирован: Ср июл 18, 2018 11:51:59Сообщений: 83
Рейтинг сообщения: 0
Я заставил все заработать...
Почти все.
Но у меня в заголовочном файле не распознает тип uint8_t.
С чего бы...
Добавлено after 5 minutes 19 seconds: RCC - указатель на uint8_t , а не на структуру.
Разве это не первый элемент структуры?
Вернуться наверх
Реклама
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Подробнее>>
Аlex
Заголовок сообщения: Re: Буфер данных Stm32f103c8
Добавлено: Пн авг 06, 2018 22:03:27
Модератор
Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57Сообщений: 4510Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
khch писал(а):
Разве это не первый элемент структуры?
С чего бы ? Где Вы тут видите хоть одно упоминание о структуре :
Код:
#define RCC ((uint8_t *) 0xcccccccc)
?
Я вижу указатель на
uint8_t с адресом
0xcccccccc .
Вернуться наверх
Реклама
Реклама
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Подробнее>>
arkhnchul
Заголовок сообщения: Re: Буфер данных Stm32f103c8
Добавлено: Пн авг 06, 2018 22:03:49
Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53Сообщений: 3092Откуда: москва, уфа
Рейтинг сообщения: 0
в приведенном фрагменте кода - нет. Компилятор на такое ругнется типа "человек, что ты мне втираешь, у uint8_t нет поля GRH"
Вернуться наверх
Реклама
Oxford
Заголовок сообщения: Re: Буфер данных Stm32f103c8
Добавлено: Пн авг 06, 2018 22:06:14
Опытный кот
Карма: 4
Рейтинг сообщений: 11
Зарегистрирован: Вт окт 23, 2012 13:17:25Сообщений: 823Откуда: Киселевск
Рейтинг сообщения: 0
Я не понимаю ваш подход к программированию. Что вы хотите сделать? Скриншот или текст что компилятор говорит.
_________________Инженер R @D Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Вернуться наверх
Реклама
arkhnchul
Заголовок сообщения: Re: Буфер данных Stm32f103c8
Добавлено: Пн авг 06, 2018 22:07:05
Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53Сообщений: 3092Откуда: москва, уфа
Рейтинг сообщения: 0
кстати, в чем конечная цель вот этого телодвижения -
Дефаню пойнтер с адресом в области SRAM 0x30000000
во что бы то ни стало разместить массив по определенному адресу? По-хорошему это делается не так. Раскидывать переменные по памяти - дело линкера, и пинать надо именно его.
Вернуться наверх
Реклама
Аlex
Заголовок сообщения: Re: Буфер данных Stm32f103c8
Добавлено: Пн авг 06, 2018 22:08:16
Модератор
Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57Сообщений: 4510Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
khch писал(а):
крили гуглили
По всей видимости - плохо курили и гуглили. Так что :
khch писал(а):
"мля, вот нагугли, кури даташиты..."
Вы задаёте вопросы, ответы на которые гуглятся за секунды. Это всё азы языка Си ...
Вернуться наверх
Реклама
khch
Заголовок сообщения: Re: Буфер данных Stm32f103c8
Добавлено: Пн авг 06, 2018 22:11:17
Карма: -1
Рейтинг сообщений: -10
Зарегистрирован: Ср июл 18, 2018 11:51:59Сообщений: 83
Рейтинг сообщения: 0
Код:
typedef struct { uint8_t Data_buff[512]; }SPI_Data_BuffType; void DMA_ACCUM () { uint8_t Data; HAL_SPI_Receive_DMA (&hspi1, &Data, 1); Pointer->Data_buff[0] = Data; // pointer задан дефайном, как указал ранее. }
Компилятор доволен. Что настораживает. Впрочем это так, только понимание работы.
пытаюсь принять черех SPI непрерывный поток данных, отправить это все в буфер и так дальше....
Добавлено after 1 minute 25 seconds: khch писал(а):
крили гуглили
По всей видимости - плохо курили и гуглили. Так что :
khch писал(а):
"мля, вот нагугли, кури даташиты..."
Вы задаёте вопросы, ответы на которые гуглятся за секунды. Это всё азы языка Си ...
Видимо плохо, да.
Конечно за секунды. Все нормально, спасибо. Я не знал про гугл, наврал просто. Вы мне глаза открыли...
Вернуться наверх
Аlex
Заголовок сообщения: Re: Буфер данных Stm32f103c8
Добавлено: Пн авг 06, 2018 22:16:22
Модератор
Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57Сообщений: 4510Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
khch писал(а):
Pointer->Data_buff[0] = Data; // pointer задан дефайном, как указал ранее
Если так :
Код:
#define Pointer ((uint8_t *) 0xcccccccc)
то компилятор просто обязан Вас отругать.
Вернуться наверх
khch
Заголовок сообщения: Re: Буфер данных Stm32f103c8
Добавлено: Пн авг 06, 2018 22:25:23
Карма: -1
Рейтинг сообщений: -10
Зарегистрирован: Ср июл 18, 2018 11:51:59Сообщений: 83
Рейтинг сообщения: 0
Извините, он не ругает. Может работать не будет, но не ругает.Добавлено after 1 minute 5 seconds: Но почему должен?Добавлено after 3 minutes 58 seconds: Блин... Дошло... Там же вместо uint должно быть название структуры... Мать её.
Вернуться наверх
khch
Заголовок сообщения: Re: Буфер данных Stm32f103c8
Добавлено: Вт авг 07, 2018 11:04:15
Карма: -1
Рейтинг сообщений: -10
Зарегистрирован: Ср июл 18, 2018 11:51:59Сообщений: 83
Рейтинг сообщения: 0
Я, кстати, в коде правильно написал
Это тут набрал неверно. Потому и не ругался компайлер
Добавлено after 2 minutes 10 seconds: Слушайте, а куда DMA укладывает данные с регистра данных SPI ?
HAL_SPI_Receive_DMA -- вот функция
Я принудительно написал адрес SRAM. Но ведь
Добавлено after 38 minutes 2 seconds: Люди, обьясните как по этому коду найти куда функция пересылает данные?
Код:
HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size) { HAL_StatusTypeDef errorcode = HAL_OK; if((hspi->Init.Direction == SPI_DIRECTION_2LINES)&&(hspi->Init.Mode == SPI_MODE_MASTER)) { hspi->State = HAL_SPI_STATE_BUSY_RX; /* Call transmit-receive function to send Dummy data on Tx line and generate clock on CLK line */ return HAL_SPI_TransmitReceive_DMA(hspi, pData, pData, Size); } /* Process Locked */ __HAL_LOCK(hspi); if(hspi->State != HAL_SPI_STATE_READY) { errorcode = HAL_BUSY; goto error; } if((pData == NULL) || (Size == 0U)) { errorcode = HAL_ERROR; goto error; } /* Set the transaction information */ hspi->State = HAL_SPI_STATE_BUSY_RX; hspi->ErrorCode = HAL_SPI_ERROR_NONE; hspi->pRxBuffPtr = (uint8_t *)pData; hspi->RxXferSize = Size; hspi->RxXferCount = Size; /*Init field not used in handle to zero */ hspi->RxISR = NULL; hspi->TxISR = NULL; hspi->TxXferSize = 0U; hspi->TxXferCount = 0U; /* Configure communication direction : 1Line */ if(hspi->Init.Direction == SPI_DIRECTION_1LINE) { SPI_1LINE_RX(hspi); } #if (USE_SPI_CRC != 0U) /* Reset CRC Calculation */ if(hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) { SPI_RESET_CRC(hspi); } #endif /* USE_SPI_CRC */ /* Set the SPI RxDMA Half transfer complete callback */ hspi->hdmarx->XferHalfCpltCallback = SPI_DMAHalfReceiveCplt; /* Set the SPI Rx DMA transfer complete callback */ hspi->hdmarx->XferCpltCallback = SPI_DMAReceiveCplt; /* Set the DMA error callback */ hspi->hdmarx->XferErrorCallback = SPI_DMAError; /* Set the DMA AbortCpltCallback */ hspi->hdmarx->XferAbortCallback = NULL; /* Enable the Rx DMA Stream */ HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuffPtr, hspi->RxXferCount); /* Check if the SPI is already enabled */ if((hspi->Instance->CR1 &SPI_CR1_SPE) != SPI_CR1_SPE) { /* Enable SPI peripheral */ __HAL_SPI_ENABLE(hspi); } /* Enable the SPI Error Interrupt Bit */ SET_BIT(hspi->Instance->CR2, SPI_CR2_ERRIE); /* Enable Rx DMA Request */ SET_BIT(hspi->Instance->CR2, SPI_CR2_RXDMAEN); error: /* Process Unlocked */ __HAL_UNLOCK(hspi); return errorcode; }
Вернуться наверх
ARV
Заголовок сообщения: Re: Буфер данных Stm32f103c8
Добавлено: Вт авг 07, 2018 11:11:30
Ум, честь и совесть. И скромность.
Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56Сообщений: 18030Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
(uint32_t)hspi->pRxBuffPtr - это не оно?
_________________если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...Мой уютный бложик ... заходите!
Вернуться наверх
khch
Заголовок сообщения: Re: Буфер данных Stm32f103c8
Добавлено: Вт авг 07, 2018 11:23:36
Карма: -1
Рейтинг сообщений: -10
Зарегистрирован: Ср июл 18, 2018 11:51:59Сообщений: 83
Рейтинг сообщения: 0
Код:
typedef struct __SPI_HandleTypeDef { SPI_TypeDef *Instance; /*!< SPI registers base address */ SPI_InitTypeDef Init; /*!< SPI communication parameters */ uint8_t *pTxBuffPtr; /*!< Pointer to SPI Tx transfer Buffer */ uint16_t TxXferSize; /*!< SPI Tx Transfer size */ __IO uint16_t TxXferCount; /*!< SPI Tx Transfer Counter */ uint8_t *pRxBuffPtr; /*!< Pointer to SPI Rx transfer Buffer */ uint16_t RxXferSize; /*!< SPI Rx Transfer size */ __IO uint16_t RxXferCount; /*!< SPI Rx Transfer Counter */ void (*RxISR)(struct __SPI_HandleTypeDef * hspi); /*!< function pointer on Rx ISR */ void (*TxISR)(struct __SPI_HandleTypeDef * hspi); /*!< function pointer on Tx ISR */ DMA_HandleTypeDef *hdmatx; /*!< SPI Tx DMA Handle parameters */ DMA_HandleTypeDef *hdmarx; /*!< SPI Rx DMA Handle parameters */ HAL_LockTypeDef Lock; /*!< Locking object */ __IO HAL_SPI_StateTypeDef State; /*!< SPI communication state */ __IO uint32_t ErrorCode; /*!< SPI Error code */ }SPI_HandleTypeDef;
Это все, что я могу о нем сказать.
Вернуться наверх
ARV
Заголовок сообщения: Re: Буфер данных Stm32f103c8
Добавлено: Вт авг 07, 2018 11:30:54
Ум, честь и совесть. И скромность.
Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56Сообщений: 18030Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
комментарии к коду не пробовали читать, если уж документацию на HAL лень?Pointer to SPI Rx transfer Buffer
_________________если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...Мой уютный бложик ... заходите!
Вернуться наверх
khch
Заголовок сообщения: Re: Буфер данных Stm32f103c8
Добавлено: Вт авг 07, 2018 14:30:33
Карма: -1
Рейтинг сообщений: -10
Зарегистрирован: Ср июл 18, 2018 11:51:59Сообщений: 83
Рейтинг сообщения: 0
комментарии к коду не пробовали читать, если уж документацию на HAL лень?Pointer to SPI Rx transfer Buffer
Изучаю. Не могу найти.
Подозреваю, что нет.Думаю это пойнтер на регистр данных в SPI. А мне нужно место, куда ДМА записывает поступившие данные
Вернуться наверх
VladislavS
Заголовок сообщения: Re: Буфер данных Stm32f103c8
Добавлено: Вт авг 07, 2018 14:52:34
Поставщик валерьянки для Кота
Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47Сообщений: 2479
Рейтинг сообщения: 0
Вы чё, прикалываетесь?
Код:
/* Enable the Rx DMA Stream */ HAL_DMA_Start_IT(hspi->hdmarx, (uint32_t)&hspi->Instance->DR, (uint32_t)hspi->pRxBuffPtr, hspi->RxXferCount);
Вернуться наверх
ARV
Заголовок сообщения: Re: Буфер данных Stm32f103c8
Добавлено: Вт авг 07, 2018 15:09:27
Ум, честь и совесть. И скромность.
Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56Сообщений: 18030Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
khch писал(а):
Думаю это пойнтер на регистр данных в SPI
разве РЕГИСТР теперь называется БУФФЕР?
ARV писал(а):
Pointer to SPI Rx transfer Buffer
вы это можете прочесть и перевести?
_________________если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...Мой уютный бложик ... заходите!
Вернуться наверх
khch
Заголовок сообщения: Re: Буфер данных Stm32f103c8
Добавлено: Вт авг 07, 2018 15:17:50
Карма: -1
Рейтинг сообщений: -10
Зарегистрирован: Ср июл 18, 2018 11:51:59Сообщений: 83
Рейтинг сообщения: -4
khch писал(а):
разве РЕГИСТР теперь называется БУФФЕР?
ARV писал(а):
Pointer to SPI Rx transfer Buffer
вы это можете прочесть и перевести?
Давайте постараемся быть сдержанее. Мне очень полезен ваш ответ. Но если он будет сопровождаться хамством по отношению ко мне - воздержитесь.
Да, я не плачУ за знания, а вы мне не обязаны отвечать.
Я в этом деле совсем новичок. Ничего не понимаю. Зачастую люди используют одному и тому же процессу\явлению разные названия, используют сленг и я пытаюсь защититься от этих ошибок.
И потом мне бы хотелось знать где именно этот буфер.
Последний раз редактировалось khch Вт авг 07, 2018 15:23:17, всего редактировалось 1 раз.
Вернуться наверх
Страница 1 из 10
[ Сообщений: 200 ]
, , , , ...
Кто сейчас на форуме
Сейчас этот форум просматривают: Google [Bot] и гости: 30
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения