повторить проект

fsdb
Offline
Зарегистрирован: 24.10.2015

Добрый день. повторяю один из проектов под stm32f103. Он имеет открытые исходные коды. Суть устройства такова что я посылаю 12 байт а он мне в ответ он должен возвращать 7388 байт. хочу подключить к esp8266 wemos d1

В прошивке я вижу коментарии автора что не нужен SS pin. не могу понять почему автор все таки пренебрег этим. так вообще можно? вы встречали в своей практике? и получится ли сопрячь по SPI stm32f103 и esp8266 . ни разу не делал этого. жду с алиэкспресс компоненты и хотел бы услышать мнение старших товарищей 


/*	
/* Setup of the SPI+DMA peripherals 
SPI2 is configured as follows:
 
SCLK on PB13
MISO on PB14
MOSI on PB15
NSS is not needed and not configured
 
DMA1 stream 4 and 3 handles the transmitted and received
data respectively.
 
Once this function is run communication has been set up
and runs whenever the Raspberry Pi demands it.
 
Furthermore a DMA interrupt is generated at the end of
each transfer. Interrupt routines are located in stm32f4xx_it.c
 
Notice that the Raspberry Pi's SPI can only handle 8b data
but the ADC delivers 12b into a 16b array. This causes an
endianness-like problem on the Raspberry Pi side. 
eg. a uint16 like 0x0102 is received as 0x02 0x01 
This is handled on the Raspberry side with 
proper_data[i] = (unsigned int)Rx_data[i+1] << 8 | Rx_data[i]; */
 
 

Connect SPI pins to AF5 */ /* NSS is not needed and therefore commented out */ //GPIO_PinAFConfig(GPIOB, GPIO_PinSource12, GPIO_AF_SPI2); GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2); GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_SPI2); GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_SPI2); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; /* NSS SCK pin configuration */ /* This is commented out because we don't need the slave select feature, hence the NSS_Soft flag 25 lines from here. */ //GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //GPIO_Init(GPIOB, &GPIO_InitStructure); /* SPI SCK pin configuration */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_Init(GPIOB, &GPIO_InitStructure); /* SPI MISO pin configuration */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14; GPIO_Init(GPIOB, &GPIO_InitStructure); /* SPI MOSI pin configuration */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15; GPIO_Init(GPIOB, &GPIO_InitStructure); /* SPI configuration -------------------------------------------------------*/ /* Raspberry Pi must be master, and can only handle 8b data*/ SPI_I2S_DeInit(SPI2); SPI_InitStructure.SPI_Mode = SPI_Mode_Slave; SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2; SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI2, &SPI_InitStructure);

 

  
BOOM
BOOM аватар
Онлайн
Зарегистрирован: 14.11.2018

Я хз что это за проект такой (вы ж его в тайне держите), но могу предположить что слейвов 1шт или нет вообще, поэтому и не нужен слэйв селект. 

fsdb
Offline
Зарегистрирован: 24.10.2015

слейв всего один и он со стороны stm32f103. если один то можно без SS? 

в тайне не держу. просто не рекламирую. да и сами там врядли будете тратить свое время что бы скачивать исходники и смотреть

nik182
Offline
Зарегистрирован: 04.05.2015

Ss это выбор чипа. Если чип один, то можно ss заземлить и все посылки по spi будет он получать.

fsdb
Offline
Зарегистрирован: 24.10.2015

спасибо ребята. сам автор тоже откликнулся на вопрос.