Нормально работает.
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Зачем SRAM напаянный при экране с видеобуфером и вылой перерисовкой отдельных данных ?spbslon писал(а): - С FSMC подскажите, есть недорогие (1000+- руб) готовые платы на али типа 100/144 ногого F103/F407 с уже напаянным SRAM? Самому тянуть 48 дорог ЛУТом - тяжело.
чем FSMC отличается от параллельного 8/16 бит ? это оно и есть.- Для медленного изменения данных, порядка не более 10 раз в сек, может мне не надо заморачиваться с FSMC? Может мне хватит SPI или параллельного 8/16bit что бы не мерцало 320х240 565RGB? (с OLED SPI опыт есть)
Лишь бы там ноги нужные были выведеныspbslon писал(а):Ок, спасибо. Тогда сделаю вручную быстро, на чём нибудь типа F103 базового
Что то сложнее сделаю на более мощных, дешёвых и быстрых в разработке платформах типа OrangePi
SPI и I2C там всегда, GPIO тоже часто есть. Прорвёмся. На STM32 будем собирать данные, а смотреть и управлять уже на приличной железке. Для разовой и мелокосерийной разработки так выгоднее и быстрее.Satyr писал(а):Лишь бы там ноги нужные были выведеныspbslon писал(а):Что то сложнее сделаю на более мощных, дешёвых и быстрых в разработке платформах типа OrangePi
Вот это отличный способ обрести усложнить задачу раза в 1.5 -)spbslon писал(а):На STM32 будем собирать данные, а смотреть и управлять уже на приличной железке.
Фиг знает, товарищ начальник. Смотришь брутальных мужиков FSMC, с другой стороны радостные хипстерские ардуинщики, у которых "сразу всё летает", и кажется что "нафиг этот STM", по крайне мере для GUI. Пока не попробуешь оба варианта - не поймёшь же.Satyr писал(а):Вот это отличный способ обрести усложнить задачу раза в 1.5 -)spbslon писал(а):На STM32 будем собирать данные, а смотреть и управлять уже на приличной железке.
Код: Выделить всё
void SPI_init(void) {
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource3, GPIO_AF_SPI1); // SCK
GPIO_PinAFConfig(GPIOB, GPIO_PinSource4 , GPIO_AF_SPI1); // MISO
GPIO_PinAFConfig(GPIOB, GPIO_PinSource5 , GPIO_AF_SPI1); // MOSI
GPIO_InitStructure.GPIO_Pin = LCD_SCK | LCD_MOSI | LCD_MISO;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_High_Speed;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB, &GPIO_InitStructure)
SPI_InitTypeDef SPI_InitStructure;
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_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_Init(SPI1, &SPI_InitStructure);
SPI_Cmd(SPI1, ENABLE);
}
Код: Выделить всё
/**
* @brief AF 3 selection
*/
#define GPIO_AF_TIM8 ((uint8_t)0x03) /* TIM8 Alternate Function mapping */
#define GPIO_AF_TIM9 ((uint8_t)0x03) /* TIM9 Alternate Function mapping */
#define GPIO_AF_TIM10 ((uint8_t)0x03) /* TIM10 Alternate Function mapping */
#define GPIO_AF_TIM11 ((uint8_t)0x03) /* TIM11 Alternate Function mapping */
/**
* @brief AF 4 selection
*/
#define GPIO_AF_I2C1 ((uint8_t)0x04) /* I2C1 Alternate Function mapping */
#define GPIO_AF_I2C2 ((uint8_t)0x04) /* I2C2 Alternate Function mapping */
#define GPIO_AF_I2C3 ((uint8_t)0x04) /* I2C3 Alternate Function mapping */
/**
* @brief AF 5 selection
*/
#define GPIO_AF_SPI1 ((uint8_t)0x05) /* SPI1 Alternate Function mapping */
#define GPIO_AF_SPI2 ((uint8_t)0x05) /* SPI2/I2S2 Alternate Function mapping */
/**
* @brief AF 6 selection
*/
#define GPIO_AF_SPI3 ((uint8_t)0x06) /* SPI3/I2S3 Alternate Function mapping */
/**
* @brief AF 7 selection
*/
#define GPIO_AF_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */
#define GPIO_AF_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */
#define GPIO_AF_USART3 ((uint8_t)0x07) /* USART3 Alternate Function mapping */
#define GPIO_AF_I2S3ext ((uint8_t)0x07) /* I2S3ext Alternate Function mapping */
/**
* @brief AF 8 selection
*/
#define GPIO_AF_UART4 ((uint8_t)0x08) /* UART4 Alternate Function mapping */
#define GPIO_AF_UART5 ((uint8_t)0x08) /* UART5 Alternate Function mapping */
#define GPIO_AF_USART6 ((uint8_t)0x08) /* USART6 Alternate Function mapping */
Плохо ты даташит читаешь, раз не заметил таблицу "Alternate function", на 8 страниц.pokk писал(а):Добрый день, читаю даташит на STM32F446
Как выбрать какой AF подключать на SPI2? AF5 или AF6..8
Код: Выделить всё
SCB->VTOR = 0x08008400;Код: Выделить всё
__set_MSP(*(__IO uint32_t*)0x08008400);Код: Выделить всё
((void(*)(void))(*(__IO uint32_t*)(0x08008400+ sizeof(uint32_t))))();