Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

Не получается сконфигурировать SPI1 на STM32F103C8

Непрочитано 25.11.2016, 10:07  
Дмитрий1987
Временная регистрация
 
Регистрация: 10.11.2016
Сообщений: 65
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Дмитрий1987 на пути к лучшему
По умолчанию Не получается сконфигурировать SPI1 на STM32F103C8

Всем привет!
У меня есть STM32F103C8 !
Хочу сконфигурировать SPI1 на нем, написал прогу!

Нажмите, чтобы открыть спойлер
//spi1_mosi-pa7,spi1_miso-pa6,spi1_sck-pa5,spi1_nss-pa4
#include "stm32f10x.h"

int main()
{
RCC-›APB2ENR=RCC_APB2ENR_IOPAEN;
RCC-›APB2ENR|=RCC_APB2ENR_AFIOEN;
RCC-›APB2ENR|=RCC_APB2ENR_SPI1EN;

GPIOA-›CRL|=GPIO_CRL_CNF7_1;//mosi
GPIOA-›CRL|=GPIO_CRL_MODE7;
GPIOA-›CRL|=GPIO_CRL_CNF6_1;//miso
GPIOA-›CRL&=~GPIO_CRL_MODE6;
GPIOA-›CRL|=GPIO_CRL_CNF5_1;//sck
GPIOA-›CRL|=GPIO_CRL_MODE5;
GPIOA-›CRL|=GPIO_CRL_CNF4_1;//miso
GPIOA-›CRL&=~GPIO_CRL_MODE4;


SPI1-›CR1=SPI_CR1_BR_0|SPI_CR1_BR_1|SPI_CR1_BR_2;
//SPI1-›CR1=SPI_CR1_BIDIMODE;
//SPI1-›CR1|=SPI_CR1_BIDIOE;
SPI1-›CR1|=SPI_CR1_SSM;
SPI1-›CR1|=SPI_CR1_SSI;
SPI1-›CR1|=SPI_CR1_MSTR;
//SPI1-›CR2=SPI_CR2_SSOE;
SPI1-›CR1|=SPI_CR1_SPE;

while (1)
{
SPI1-›DR=0x55;
while (!(SPI1-›SR&SPI_SR_TXE));
}


На выводах SCK и MOSI импульсов нет!
Что не так, подскажите, пожалуйста!
Спасибо!
Реклама:
Дмитрий1987 вне форума  
Непрочитано 25.11.2016, 10:14  
serb-radio
Гражданин KAZUS.RUN
 
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
serb-radio на пути к лучшему
По умолчанию Re: Не получается сконфигурировать SPI1 на STM32F103C8

Держите:
oid SPI1_init (void)
{
//AFIO-›MAPR |=AFIO_MAPR_SPI1_REMAP ;

//âûâîä óïðàâëåíèÿ MOSI PA7: âûõîä äâóõòàêòíûé îáùåãî íàçíà÷åíèÿ, 50 MHz
GPIOA-›CRL |= GPIO_CRL_MODE7; //
GPIOA-›CRL &= ~GPIO_CRL_CNF7; //
GPIOA-›CRL |= GPIO_CRL_CNF7_1; //

//âûâîä MISO PA6: âûõîä äâóõòàêòíûé ñ àëüòåðíàòèâíîé ôóíóöèåé, 50MHz
GPIOA-›CRL &= ~GPIO_CRL_MODE6; //
GPIOA-›CRL &= ~GPIO_CRL_CNF6; //
GPIOA-›CRL |= GPIO_CRL_CNF6_1; //
// GPIOA-›BSRR = GPIO_BSRR_BS6; //

//âûâîä SCK PA5: âûõîä äâóõòàêòíûé ñ àëüòåðíàòèâíîé ôóíóöèåé, 50MHz
GPIOA-›CRL |= GPIO_CRL_MODE5; //
GPIOA-›CRL &= ~GPIO_CRL_CNF5; //
GPIOA-›CRL |= GPIO_CRL_CNF5_1; //

//âûâîä NSS PA4: âûõîä äâóõòàêòíûé ñ àëüòåðíàòèâíîé ôóíóöèåé, 50MHz
// GPIOA-›CRL |= GPIO_CRL_MODE4; //
// GPIOA-›CRL &= ~GPIO_CRL_CNF4; //
//GPIOA-›CRL |= GPIO_CRL_CNF4_1; //
GPIOA-›CRL |= GPIO_CRL_MODE4;
GPIOA-›CRL &=~GPIO_CRL_CNF4;
GPIOA-›BSRR|= GPIO_BSRR_BS4;

//íàñòðîéêà ìîäóëÿ SPI
RCC-›APB2ENR |= RCC_APB2ENR_SPI1EN; //âêëþ÷èòü òàêòèðîâàíèå
SPI1-›CR2 = 0x0000; //
SPI1-›CR1 = SPI_CR1_MSTR; //êîíòðîëëåð - ìàñòåð

SPI1-›CR1 &= ~SPI_CR1_CPHA;
SPI1-›CR1 &= ~SPI_CR1_CPOL;
SPI1-›CR1 &= ~SPI_CR1_RXONLY; // ïîëíûé äóïëåêñ
SPI1-›CR1 &= ~SPI_CR1_DFF; // ÔÎÐÌÀÒ ÄÀÍÍÛÕ 8 ÁÈÒ

SPI1-›CR1 |= SPI_CR1_BR; //çàäàåì ñàìóþ íèçêóþ ñêîðîñòü

/*
SPI1-›CR1 &= ~SPI_CR1_BR_0;
SPI1-›CR1 &= ~SPI_CR1_BR_1;
SPI1-›CR1 &= ~SPI_CR1_BR_2;
*/

SPI1-›CR1 |= SPI_CR1_SSI;
SPI1-›CR1 |= SPI_CR1_SSM; //ïðîãðàììíîå óïðàâëåíèå NSS
SPI1-›CR1 |= SPI_CR1_SPE; //ðàçðåøàåì ðàáîòó SPI

return;
}


uint8_t spi_send (uint8_t data)
{
while (!(SPI1-›SR & SPI_SR_TXE)); //ïðåäûäóùàÿ ïîñûëêà çàâåðøåíà
SPI1-›DR = data; //çàãðóæàåì äàííûå äëÿ îòñûëêè
while (!(SPI1-›SR & SPI_SR_RXNE)); //æäåì îêîí÷àíèÿ îáìåíà
return (SPI1-›DR); //÷èòàåì ïðèíÿòûå äàííûå
}
__________________
То, что нас не убивает - делает нас сильнее
serb-radio вне форума  
Непрочитано 25.11.2016, 11:01  
Дмитрий1987
Временная регистрация
 
Регистрация: 10.11.2016
Сообщений: 65
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Дмитрий1987 на пути к лучшему
По умолчанию Re: Не получается сконфигурировать SPI1 на STM32F103C8

Позвольте пару вопросов, а то я не понимаю!
1 Зачем сначала GPIOA-›CRL &= ~GPIO_CRL_CNF7; // потом GPIOA-›CRL |= GPIO_CRL_CNF7_1; //? Почему нельзя просто GPIOA-›CRL |= GPIO_CRL_CNF7_1; //?
2 Я в программе не увидел RCC_APB2ENR_IOPAEN, RCC-›APB2ENR|=RCC_APB2ENR_AFIOEN. Разве они не нужны?
3 В функции oid SPI1_init (void) я не увидел вызов функции spi_send ().
Спасибо!
Дмитрий1987 вне форума  
Непрочитано 25.11.2016, 11:11  
serb-radio
Гражданин KAZUS.RUN
 
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
serb-radio на пути к лучшему
По умолчанию Re: Не получается сконфигурировать SPI1 на STM32F103C8

1 Зачем сначала GPIOA-›CRL &= ~GPIO_CRL_CNF7; // потом GPIOA-›CRL |= GPIO_CRL_CNF7_1; //? Почему нельзя просто GPIOA-›CRL |= GPIO_CRL_CNF7_1; //?
Обнуляем сначала все биты, потом выставляем нужный, мало ли что было ранее записано (по умолчанию например)

2 Я в программе не увидел RCC_APB2ENR_IOPAEN, RCC-›APB2ENR|=RCC_APB2ENR_AFIOEN. Разве они не нужны?
Задано в конфиге GPIO

3 В функции void SPI1_init (void) я не увидел вызов функции spi_send ().
А зачем вызывать чтение/запись в конфиге?вызывайте ее в основной проге
__________________
То, что нас не убивает - делает нас сильнее
serb-radio вне форума  
Сказали "Спасибо" serb-radio
Дмитрий1987 (25.11.2016)
Непрочитано 25.11.2016, 11:25  
Дмитрий1987
Временная регистрация
 
Регистрация: 10.11.2016
Сообщений: 65
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Дмитрий1987 на пути к лучшему
По умолчанию Re: Не получается сконфигурировать SPI1 на STM32F103C8

serb-radio, вы можете еще выслать конфиг GPIO?
я скопировал часть SPI в свою прогу! Эффект тот же(
Спасибо!
Дмитрий1987 вне форума  
Непрочитано 25.11.2016, 11:27  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Не получается сконфигурировать SPI1 на STM32F103C8

анти-Dosicus код с использованием SPL
Easyrider83 вне форума  
Непрочитано 25.11.2016, 11:35  
Дмитрий1987
Временная регистрация
 
Регистрация: 10.11.2016
Сообщений: 65
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Дмитрий1987 на пути к лучшему
По умолчанию Re: Не получается сконфигурировать SPI1 на STM32F103C8

serb-radio, я добавил в своей проге GPIOA-›CRL &= ~GPIO_CRL_CNFх перед конфигурацией выводов SPI1, и все заработало!
Спасибо!
Дмитрий1987 вне форума  
Непрочитано 25.11.2016, 12:10  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Не получается сконфигурировать SPI1 на STM32F103C8

Easyrider83, спагетти аля SPL ...
Паш, зачем тебе стм - пиши для ардуньи.
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 25.11.2016 в 12:19.
dosikus вне форума  
Непрочитано 25.11.2016, 13:18  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Не получается сконфигурировать SPI1 на STM32F103C8

dosikus, Леша, дорогой, ты бы посмотрел исходники к серьезным девайсам для промышленного применения. SPL - это цветочки. Там параметры в виде строк передаются и применяются методы сравнения. А еще кругом printf и все базы данных в текстовом виде. Проц 168 МГц все это крутит, при этом в системе запущено больше сотни процессов. И все работает. Команда разработчиков - около ста человек в Канаде.
Easyrider83 вне форума  
Непрочитано 25.11.2016, 13:47  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Не получается сконфигурировать SPI1 на STM32F103C8

Easyrider83, ты мне хочешь рассказать о деградации нынешнего образования?
__________________
Осторожно , злой кот
dosikus вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
STM32F030C8T6 пролема с SPI1 alexdos ARM 11 01.10.2013 20:46
STM32 Не получается настроить термометр ds1621 sanstan ARM 6 19.04.2013 15:43


Часовой пояс GMT +4, время: 02:51.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.