Jump to content
Sign in to follow this  
imusg

Spi2Spi Stm32

Recommended Posts

Подскажите пожалуйста, для тренировки работы с SPI сделать пересылку данных SPI1->SPI3->USART2 но в итоге в уарт ничего не пришло! Помогите разобраться!

#include <stm32f4xx_gpio.h>
#include <stm32f4xx_rcc.h>
#include <stm32f4xx_spi.h>
#include <stm32f4xx_usart.h>
void init_gpio_c() {
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
GPIO_InitTypeDef init;
init.GPIO_Mode = GPIO_Mode_AF;
init.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12;
init.GPIO_OType = GPIO_OType_PP;
GPIO_Init(GPIOC,&init);
}
void init_gpio_a() {
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_InitTypeDef init;
init.GPIO_Mode = GPIO_Mode_AF;
init.GPIO_PuPd = GPIO_PuPd_UP;
init.GPIO_Speed = GPIO_Speed_50MHz;
init.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
init.GPIO_OType = GPIO_OType_PP;
GPIO_Init(GPIOA,&init);
}
void spi1_init () {
 GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_SPI1);
 GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_SPI1);
 GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_SPI1);
RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, ENABLE);
SPI_InitTypeDef spi_one;
spi_one.SPI_Mode = SPI_Mode_Master;
spi_one.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16 ;
spi_one.SPI_CPHA = SPI_CPHA_1Edge;
spi_one.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
spi_one.SPI_CPOL = SPI_CPOL_Low;
spi_one.SPI_CRCPolynomial = 7;
spi_one.SPI_DataSize = SPI_DataSize_8b;
spi_one.SPI_FirstBit = SPI_FirstBit_MSB;
spi_one.SPI_NSS = SPI_NSS_Hard;
SPI_Init(SPI1,&spi_one);
SPI_Cmd(SPI1,ENABLE);
}
void spi2_init () {
 GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_SPI3);
 GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_SPI3);
 GPIO_PinAFConfig(GPIOC, GPIO_PinSource12, GPIO_AF_SPI3);
RCC_APB2PeriphResetCmd(RCC_APB1Periph_SPI3, ENABLE);
SPI_InitTypeDef spi_two;
spi_two.SPI_Mode = SPI_Mode_Slave;
spi_two.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16 ;
spi_two.SPI_CPHA = SPI_CPHA_1Edge;
spi_two.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
spi_two.SPI_CPOL = SPI_CPOL_Low;
spi_two.SPI_CRCPolynomial = 7;
spi_two.SPI_DataSize = SPI_DataSize_8b;
spi_two.SPI_FirstBit = SPI_FirstBit_MSB;
spi_two.SPI_NSS = SPI_NSS_Hard;
SPI_Init(SPI3,&spi_two);
SPI_Cmd(SPI3,ENABLE);
}
void USART_Config()
{
USART_InitTypeDef USART_InitStructure;

// подключаем тактирование портов и USART
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
// порты - подключаются к альтернативным функциям
GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_USART2);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_USART2);
// задаём свойства USART
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
// распихиваем переменную USART_InitStructure по регистрам и USART2
USART_Init(USART2, &USART_InitStructure);
// запускаем периферию USART1 и USART2
USART_Cmd(USART2, ENABLE);
}
void delay(unsigned int s){
while(--s > 0) {
 __NOP();
}
}
void go () {
char data = "Hello!!! ";
SPI_I2S_SendData(SPI1, data);
delay(500);
char recv;
recv = SPI_I2S_ReceiveData(SPI3);
delay(500);
USART_SendData(USART2,recv);
delay(500);
}
int main(void)
{
init_gpio_c();
init_gpio_a();
spi1_init ();
spi2_init ();
while(1)
{
 go();
}
}

Share this post


Link to post
Share on other sites

Вопросы ...

1. Как я понял, Вы хотите что-то передавать из SPI1 в SPI3 и далее в USART2. Надеюсь Вы соединили соответствующие ноги проца? В смысле MISO -> MOSI и наоборот?

2. Чем Вы смотрите данные на выходе USART2? MAX3232 на COM-порт?

И вообще. Разбейте задачу на куски. Т.е.:

1. Включите только SPI1. Погоняйте данные, посмотрите ноги осциллом, есть там что-то или нет ...

2. Подключите SPI3

И т.д.

От себя могу предложить работающий, проверенный модуль для USART2. Передаёт по одному байту и блоки, приём в прерывании в буфер. Без DMA.

PS. Пожалуйста, не пишите Stm32. Их же как у собаки блох и нередко отличаются ....

Пишите STM32F4, чтоб было понятно, о чём речь ....

Например, я работаю на STM32F4, каких-то особенностей STM32F1 могу и не знать. Ну и т.д.

Share this post


Link to post
Share on other sites

Дабы темы не плодить, спрошу здесь. Настраиваю SPI с аппаратным выходом NSS. Всё работает кроме вывода NSS, на выходе всегда низкий уровень, что не так?

#include "stm32f10x_spi.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x.h"
#include "misc.h"
#include "stm32f10x_exti.h"


unsigned int d;
char s;

void init(void){

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

GPIO_InitTypeDef port;
port.GPIO_Mode = GPIO_Mode_AF_PP;
port.GPIO_Pin =GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
port.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &port);




RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

SPI_InitTypeDef SPI;
SPI_StructInit(&SPI);
SPI.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI.SPI_Mode = SPI_Mode_Master;
SPI.SPI_DataSize = SPI_DataSize_16b;
SPI.SPI_CPOL = SPI_CPOL_Low;
SPI.SPI_CPHA = SPI_CPHA_1Edge;
SPI.SPI_NSS = SPI_NSS_Hard;
SPI.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32;
SPI.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_Init(SPI1,&SPI);

SPI_SSOutputCmd(SPI1,ENABLE);

SPI_I2S_ITConfig(SPI1, SPI_I2S_IT_TXE,ENABLE);


NVIC_EnableIRQ(SPI1_IRQn);
SPI_Cmd(SPI1,ENABLE);
}




int main(void)
{
init();
   while(1);
}


void SPI1_IRQHandler(void)
{
if (SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE))
   {
for(d=0;d<50;d++);
SPI_I2S_SendData(SPI1,0b1110101110011010);
   }

}


Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

Системы телеметрии находят все более широкое применение во многих отраслях на промышленных и коммунальных объектах. Требования, предъявляемые к условиям эксплуатации приборов телеметрии и, как следствие, источников питания для них, могут быть довольно жесткими. Fanso предоставляет широкую линейку продукции, рассчитанной на различные условия эксплуатации, что позволяет подобрать батарейку для каждого конкретного применения, в том числе и для устройств телеметрии.

Подробнее

Спрошу здесь.В модуле посудомойки стоит STM32P301VCT  Есть дамп прошивки как его туда залить?

Share this post


Link to post
Share on other sites
                     

Приглашаем на вебинар Решения для построения ультразвуковых счетчиков жидкостей и газов на базе MSP430

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

Подробнее...

Похожая платка и у меня.Программатор только такой или чтото ещё можно применить?

 

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Сообщения

    • Подскажите LM317 в корпусе TO-92 сколько может рассеять мощности ???? https://www.chipdip.ru/product/lm317lzrag 
    • Новый термин придуман в акустике - интерференционная каша. По мне так ничего,довольно вкусная каша.
    • Так и должно было быть.... Татьяна и Павел Татьяна и Павел: ... в любви они сочетаются на 90%. В их отношениях много тепла, романтики и нежности. Сначала может сложиться впечатление, будто они искали друг друга всю жизнь и наконец-то нашли.  Проблемы в совместимости Татьяны и Павла могут начаться в связи с ее неукротимым желанием переделать партнера, подчинить его своему влиянию и заставить бросить пить. С Павлом такая штука не пройдет. Он гордится собой как личностью и считает, что вылепил себя сам. Он не потерпит грубого вмешательства в свой внутренний мир."... Для Татьяны очень важно, чтобы рядом с ней был волевой мужчина с сильным характером. Подкаблучника она не потерпит. Павел обладает внутренним стержнем, он занимает лидирующую позицию в отношениях. При этом не забывает обращаться к мнению партнерши и всегда учитывает его. Все важные решения, скорее, будет принимать женщина. Она быстрее реагирует на перемены и может упрекать избранника в нерешительности... Юлия и Павел Идеальные отношения? Об этом мечтают все, а Юлия и Павел наслаждаются полной совместимостью и комфортом в отношениях. Такой гармонии редко кому удаётся достичь. Павел просто теряет голову от милой и обаятельной девушки, которая то заливисто смеётся, то витает в облаках романтических грёз. Впрочем, она может и воспользоваться влюблённостью мужчины для достижения своих целей, но он об этом не узнает. Если Юлия и Павел в браке будут сохранять мир и спокойствие, их союзу ничего не угрожает. Главное, чтобы всплески обоюдной страсти не стали причиной конфликта....  Павел не слишком-то разговорчив, а перед Юлией он легко открывается. Она всегда поддержит его, в любой ситуации будет на его стороне, поэтому она в курсе всех его волнений и переживаний. Павел всегда с радостью возвращается в дом, где его ждёт налаженный быт, семейный уют и вкусный ужин, принося с собой неплохое материальное подкрепление. Юлия и Павел имеют и совместимость духовную, им всегда есть о чём поговорить и что обсудить, при этом скука им непонятна и чужда. Девушка чувствует поддатливость своего мужчины и периодически поднимает бунт в борьбе за  лидерские позиции в семье, который заканчивается её безоговорочной победой... В интимных делах царит полное равноправие и взаимопонимание, они внимательны к желаниям друг друга, поэтому никто не остаётся разочарованным...  https://imena-mj.ru/index.php/9-men/561-татьяна-и-павел.html https://imena-mj.ru/index.php/9-men/560-юлия-и-павел.html
    • Айзек Азимов. Выбор катастроф - чудесная книжка... или прекрасная... без разницы - класс.
    • Я тоже не могу такого себе позволить. У меня небольшие колонки, тонко компенсацией скорректировал под них линейную АЧХ. Чтобы система усилитель - колонки линейнее была. Это лишний раз говорит о том - что каждому своё. Собрал, нравится и ладно. Мне например СРПП  по душе. А акустика, какая доступна, ту и приспособил. Другого всё равно нет. 
    • Добрый день! Спасибо автору, интересный проект. На мой взгляд, не хватает опции смены цветового пространства. Это необходимо  для совместимости ЦМУ с некоторыми лентами, имеющими иной порядок следования RGB каналов, для корректного воспроизведения эффектов на таких "неправильных" лентах.
  • Покупай!

×
×
  • Create New...