реклама на сайте
подробности

 
 
> Переход с STM32F10x на STM32F4xx, Проблемы с SPI
Diman142
сообщение Feb 13 2017, 19:10
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 16-10-16
Пользователь №: 93 785



Приветствую коллеги, я начинающий разработчик и волею судеб столкнулся с семейством МК STM32.
Нужно было переписать проект для STM32F105RC на STM32F407VG. Соответственно пришлось переписывать некоторые функции в проекте связанные с периферией. Камнем преткновения стали функции чтения и записи SPI. В исходном проекте для F105RC она имеют следующий вид:

CODE
int readfromspi(uint16 headerLength, const uint8 *headerBuffer, uint32 readlength, uint8 *readBuffer)
{

int i=0;

GPIO_ResetBits(SPIx_CS_GPIO, SPIx_CS);

for(i=0; i<headerLength; i++)
{
SPIx->DR = headerBuffer[i];

while((SPIx->SR & SPI_I2S_FLAG_RXNE) == (uint16_t)RESET);

readBuffer[0] = SPIx->DR ;
}

for(i=0; i<readlength; i++)
{
SPIx->DR = 0;

while((SPIx->SR & SPI_I2S_FLAG_RXNE) == (uint16_t)RESET);

readBuffer[i] = SPIx->DR ;
}

GPIO_SetBits(SPIx_CS_GPIO, SPIx_CS);

return 0;
}

и соответственно

CODE
int writetospi(uint16 headerLength, const uint8 *headerBuffer, uint32 bodylength, const uint8 *bodyBuffer)
{

int i=0;

GPIO_ResetBits(SPIx_CS_GPIO, SPIx_CS);

for(i=0; i<headerLength; i++)
{
SPIx->DR = headerBuffer[i];

while ((SPIx->SR & SPI_I2S_FLAG_RXNE) == (uint16_t)RESET);

SPIx->DR;
}

for(i=0; i<bodylength; i++)
{
SPIx->DR = bodyBuffer[i];

while((SPIx->SR & SPI_I2S_FLAG_RXNE) == (uint16_t)RESET);

SPIx->DR ;
}

GPIO_SetBits(SPIx_CS_GPIO, SPIx_CS);

return 0;
}


Все необходимые definы я сделал программа компилируется, но вылетает после операции чтения или записи.
Помогите пожалуйста понять, почему данные функции не отрабатывают на STM32F407VG.
И что нужно изменить в этих функциях, чтобы они заработали на моем микроконтроллере,

Заранее спасибо.

Сообщение отредактировал IgorKossak - Feb 13 2017, 19:14
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Diman142   Переход с STM32F10x на STM32F4xx   Feb 13 2017, 19:10
- - Genadi Zawidowski   А можете уточнить, что подразумевается под словом ...   Feb 13 2017, 20:27
|- - Diman142   Цитата(Genadi Zawidowski @ Feb 13 2017, 23...   Feb 13 2017, 20:50
- - Genadi Zawidowski   Тогда покажите что за буферы передаются в Ваши фун...   Feb 13 2017, 22:00
|- - Diman142   Цитата(Genadi Zawidowski @ Feb 14 2017, 01...   Feb 13 2017, 23:06
- - Genadi Zawidowski   Я же сказал про то что из регистра читать, в памят...   Feb 13 2017, 23:09
|- - Diman142   Цитата(Genadi Zawidowski @ Feb 14 2017, 02...   Feb 13 2017, 23:32
- - Genadi Zawidowski   было Код readBuffer[i] = SPIx->DR...   Feb 14 2017, 10:13
|- - Diman142   Цитата(Genadi Zawidowski @ Feb 14 2017, 13...   Feb 14 2017, 11:16
- - Genadi Zawidowski   По дебаговской диагностике не подскажу. sorry.   Feb 14 2017, 11:19
- - Diman142   Если убрать шаг проверки флага, то программа не в...   Feb 14 2017, 11:26
- - Genadi Zawidowski   Пора смотреть на инициализацию, нет ли разрешения ...   Feb 14 2017, 11:27
- - Diman142   Цитата(Genadi Zawidowski @ Feb 14 2017, 14...   Feb 14 2017, 11:48
- - A.Lex   А где вы указываете какой именно SPI ?   Feb 14 2017, 12:04
- - Diman142   Цитата(A.Lex @ Feb 14 2017, 15:04) А где ...   Feb 14 2017, 13:10
- - A.Lex   GPIO_OType_PP - это OUTPUT? MISO -> INPUT   Feb 14 2017, 14:30
- - Diman142   Цитата(A.Lex @ Feb 14 2017, 17:30) GPIO_O...   Feb 14 2017, 19:03


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th August 2025 - 22:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.0132 секунд с 7
ELECTRONIX ©2004-2016