stm32 и проблема с внешней флэш-памятью (w25q) - PullRequest
0 голосов
/ 17 января 2019

Я хочу читать / писать с внешней флешки (Winbond W25Q16BV) с STM32 micro (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);

  ...

Вот наша схема: enter image description here

К сожалению, я не нашел хорошего примера / инструкции по использованию внешних библиотек SPI. Любая помощь в этой проблеме высоко ценится.

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Вы не установили никаких параметров для структуры my_hspi, поэтому ваш драйвер HAL не знает, что ему делать.

Посмотрите на определение структуры. Есть много комментариев, для чего используются различные элементы структуры. Для инициализации часть my_hspi.init будет наиболее интересной. Также вам нужно от my_hspi.Instance до желаемого канала SPI.

Пример конфигурации можно создать с помощью бесплатного программного обеспечения STM32 Cube Mx.

0 голосов
/ 17 января 2019

Я не могу комментировать программное обеспечение, но в соответствии с вашим комментарием вы хотите включить чтение и запись флэш-памяти.

Вывод защиты от записи (/ WP) можно использовать для предотвращения записи регистра состояния.

Вывод / WP активен на низком уровне (GND). (Отключить запись)

Вывод / WP неактивно высокий (VCC). (Запись включена)

Его конструкция позволяет только чтение данных.

Если вы хотите читать и записывать данные, / WP должен быть подключен к Vcc.

...