О, так мы все в онлайне ! Это уже чат получается
О, так мы все в онлайне ! Это уже чат получается
Извините, малоубедительно. Удачи.DJ_Kiridza писал(а):Потому, что на самом деле таких ножек как PORTD1 - 5шт. Поочереди изменять для каждой направление порта + 1 такт для синхронизации, потом слушать, потом обратно менять направление порта + 1 такт для синхронизации. Опрос кнопок в разных частях прошивки - загонять сразу (полу)байт в порт не выйдет. Это во-первых: лишний объем кода, во вторых лишние операции, а прошивка немного критична к скорости выполнения - чем меньше "промежуточных" шагов - тем лучше.
Код: Выделить всё
#define SPI1_NSS GPIO_PinSource4
#define SPI1_SCK GPIO_PinSource5
#define SPI1_MISO GPIO_PinSource6
#define SPI1_MOSI GPIO_PinSource7
#define NSS_PIN GPIO_Pin_4
#define SCK_PIN GPIO_Pin_5
#define MISO_PIN GPIO_Pin_6
#define MOSI_PIN GPIO_Pin_7
SPI_InitTypeDef SPI_InitStruct;
GPIO_InitTypeDef GPIO_InitStructure;
SPI_I2S_DeInit(SPI1);
RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd (RCC_APB2Periph_SPI1, ENABLE);
GPIO_PinAFConfig(GPIOA,SPI1_NSS,GPIO_AF_SPI1);
GPIO_PinAFConfig(GPIOA,SPI1_SCK,GPIO_AF_SPI1);
GPIO_PinAFConfig(GPIOA,SPI1_MISO,GPIO_AF_SPI1);
GPIO_PinAFConfig(GPIOA,SPI1_MOSI,GPIO_AF_SPI1);
GPIO_InitStructure.GPIO_Pin = SCK_PIN;
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;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = MISO_PIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = MOSI_PIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
SPI_InitStruct.SPI_Direction= SPI_Direction_2Lines_FullDuplex;
SPI_InitStruct.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStruct.SPI_Mode = SPI_Mode_Master;
SPI_InitStruct.SPI_CPOL = SPI_CPOL_Low ;
SPI_InitStruct.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStruct.SPI_NSS = SPI_NSS_Soft ;
SPI_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128;
SPI_InitStruct.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStruct.SPI_CRCPolynomial = 7;
SPI_Init(SPI1, &SPI_InitStruct);
SPI_Cmd(SPI1, ENABLE);
SPI_NSSInternalSoftwareConfig(SPI1, SPI_NSSInternalSoft_Set);
Сча перепроверю. Как то даж не подумал об этом )Alexeyslav писал(а):Скорей всего ты сигнал не с той ноги взял.
Анализатором приконнектился правильно. PA5.Alexeyslav писал(а):Скорей всего ты сигнал не с той ноги взял.
Увы, к нужной ноге подключился. Может быть в настройке что-то не учел?Alexeyslav писал(а):Попробуй методом тыка найти нужную ногу, может ошибся в подсчете ног. Еще может быть это баг библиотеки, попробуй назначить на другие выводы.
Обычно такая картинка при высокой частоте SPI... ЛА просто не в состоянии правильно отобразить сигнал...Alexeyslav писал(а):Скорей всего ты сигнал не с той ноги взял.
Отладчиком пользоваться никто не учил???Chip115 писал(а):Может быть в настройке что-то не учел?
Блин, реально, перекинул всё на SPI2 и всё заработало. Странно. Блин, буду разбираться с SPI1. Интересно почему не пашет.