stm32 и проблема с внешней флэш-памятью (w25q)
Я хочу читать / писать с внешней флэш-памяти (Winbond W25Q16BV) с микро STM32 (stm32F030F4). но выполнение процесса останавливается на функции 'HAL_SPI_Init()'.
Я проверил процесс отладки и нашел HAL_SPI_STATE_BUSY. но я не знаю почему?
Я использую STM32CubeMX для генерации основного проекта и Keil IDE для записи и отладки.
SPI_HandleTypeDef hspi1;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_SPI1_Init(void);
uint8_t spiData[2];
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_SPI1_Init();
MX_FATFS_Init();
SPI_HandleTypeDef my_hspi;
HAL_SPI_Init(&my_hspi);
HAL_FLASH_Unlock();
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET); // CS to HIGH
HAL_Delay(10);
//Read data
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET); // CS to low
spiData[0]=0x05;
//transmit register address
HAL_SPI_Transmit(&my_hspi,spiData,1,10);
//read
HAL_SPI_Receive(&my_hspi,&spiData[1],1,10);
...
К сожалению, я не нашел хорошего примера / инструкции по использованию внешних библиотек SPI. Любая помощь в этой проблеме высоко ценится.
2 ответа
Вы не установили никаких параметров для my_hspi
структура, так что ваш драйвер HAL не знает, что он должен делать.
Посмотрите на определение структуры. Есть много комментариев, для чего используются различные элементы структуры. Для инициализации my_hspi.init
часть будет самой интересной. Также вы должны my_hspi.Instance
на нужный канал SPI.
Вы можете создать пример конфигурации с помощью бесплатного программного обеспечения STM32 Cube Mx.
Я не могу комментировать программное обеспечение, но в соответствии с вашим комментарием вы хотите включить чтение и запись флэш-памяти.
Вывод защиты от записи (/WP) можно использовать для предотвращения записи регистра состояния.
Вывод / WP является активным низким (GND). (Запись отключена)
Вывод / WP неактивно высокий (VCC). (Запись разрешить)
Его дизайн позволяет только читать данные.
Если вы хотите читать и записывать данные, /WP должен быть подключен к Vcc.