SPIFI: различия между версиями

Материал из MIK32 микроконтроллер
(Новая страница: «Контроллер SPIFI c КЭШ предназначен для организации взаимодействия микропроцессорного яд...»)
 
Нет описания правки
Строка 2: Строка 2:


Контроллер SPIFI c КЭШ обеспечивает работу с микросхемами FLASH – памяти через SPI интерфейс в одном из трех режимов: одноканальный; двухканальный; четырёхканальный. По умолчанию используется одноканальный режим, двухканальный и четырёхканальный режим включается через программное обеспечение.
Контроллер SPIFI c КЭШ обеспечивает работу с микросхемами FLASH – памяти через SPI интерфейс в одном из трех режимов: одноканальный; двухканальный; четырёхканальный. По умолчанию используется одноканальный режим, двухканальный и четырёхканальный режим включается через программное обеспечение.
Микросхема внешней FLASH – памяти, подключаемая к блоку SPI Flash c КЭШ, должна иметь встроенный интерфейс SPI (Single, Dual, Quatro) и поддерживать набор команд управления, определенных в стандарте JEDEC.


=== Пример использования SPIFI ===
=== Пример использования SPIFI ===
Строка 56: Строка 58:
}
}
}
}
</syntaxhighlight>Скрипт mcu32flash.py нужно поместить в папку, в которой хранится hex файл. Сделать это можно в Visual Studio Code - рисунок 1.
</syntaxhighlight>
[[Файл:Рисунок 1 - Размещение mcu32flash.png|мини|Рисунок 1 - Размещение mcu32flash.py]]
 
[[Файл:Рисунок 2 - Контекстное меню.png|мини|Рисунок 2 - Контекстное меню]]
==== Запуск скрипта ====
Скрипт mcu32flash.py нужно поместить в папку, в которой хранится hex файл. Сделать это можно в Visual Studio Code - рисунок 1.
[[Файл:Рисунок 1 - Размещение mcu32flash.png|мини|Рисунок 1 - Размещение mcu32flash.py|360x360пкс]]
[[Файл:Рисунок 2 - Контекстное меню.png|мини|Рисунок 2 - Контекстное меню|241x241пкс]]
После этого нажать правой кнопкой мыши по файлу и выбрать "Открыть во встроенном терминале" как на рисунке 2.
После этого нажать правой кнопкой мыши по файлу и выбрать "Открыть во встроенном терминале" как на рисунке 2.
[[Файл:Рисунок 2 - Терминал.png|мини|Рисунок 3 - Терминал]]
[[Файл:Рисунок 2 - Терминал.png|мини|Рисунок 3 - Терминал]]
[[Файл:Рисунок 4 - Фрагмент набора инструкций.png|мини|Рисунок 4 - Фрагмент набора инструкций]]
Для запуска скрипта нужно в терминале написать "python.exe .\mcu32flash.py" и нажать "Enter" - рисунок 3.
Для запуска скрипта нужно в терминале написать "python.exe .\mcu32flash.py" и нажать "Enter" - рисунок 3.
Скрипт создаст файл "array.h" в папке, в которой расположен hex файл. В "array.h" находится массив "bin_data" с байтами, которые будут загружаться в чип памяти.
=== Загрузка программы в чип памяти ===
Полученный файл "array.h" следует переместить в папку "src" проекта SPIFI. 
==== Инициализация SPIFI ====
Инициализация контроллера SPIFI проводится с помощью функции spifi_init, которая включает тактирование контроллера SPIFI на шине AHB.
==== Отправка команд ====
Для записи, чтения и стирания данных используются стандартные инструкции - рисунок 4.
Перед записью следует произвести стирание сектора или блока, в который будет производиться запись. В данном примере проводится стирание всей микросхемы.

Версия от 14:22, 17 августа 2022

Контроллер SPIFI c КЭШ предназначен для организации взаимодействия микропроцессорного ядра с микросхемой внешней FLASH-памяти. Это позволяет обеспечить исполнение кода программы, записанного в микросхеме флеш-памяти, а также при необходимости чтение и запись произвольных данных во внешнюю флэш-память в процессе выполнения программы.

Контроллер SPIFI c КЭШ обеспечивает работу с микросхемами FLASH – памяти через SPI интерфейс в одном из трех режимов: одноканальный; двухканальный; четырёхканальный. По умолчанию используется одноканальный режим, двухканальный и четырёхканальный режим включается через программное обеспечение.

Микросхема внешней FLASH – памяти, подключаемая к блоку SPI Flash c КЭШ, должна иметь встроенный интерфейс SPI (Single, Dual, Quatro) и поддерживать набор команд управления, определенных в стандарте JEDEC.

Пример использования SPIFI

В данном примере используется микросхема памяти GSN2516Y (GS Nanotech) или W25Q64FV (Winbond). В микросхему памяти с помощью MIK32 загружается программа Blink. Для этого требуется получить массив байтов из hex файла firmware.hex с помощью специального скрипта mcu32flash.py, который можно скачать по ссылке.

Blink main.c

#include <mcu32_memory_map.h>
#include <pad_config.h>
#include <gpio.h>
#include <power_manager.h>
#include "common.h"

#define PIN_LED2 7 // LED2 управляется выводом PORT_2_7
#define PIN_button 6 // LED2 управляется выводом PORT_2_6

void initClock() {
	PM->CLK_APB_P_SET |=  PM_CLOCK_GPIO_2_M; // включение тактирования GPIO2
	PM->CLK_APB_M_SET |= PM_CLOCK_PAD_CONFIG_M | PM_CLOCK_WU_M | PM_CLOCK_PM_M; // включение тактирования блока для смены режима выводов
	for (volatile int i = 0; i < 10; i++) ;
}

void ledBlink() {
	GPIO_2->OUTPUT |= 1 << PIN_LED2;   //Установка значения вывода 7 порта 2 в высокий уровень
	xprintf("ON \n");
	for (volatile int i = 0; i < 100000; i++);
	GPIO_2->OUTPUT &= ~(1 << PIN_LED2); //Установка значения вывода 7 порта  в низкий уровень   
	xprintf("OFF \n");
	for (volatile int i = 0; i < 100000; i++);
}

void ledButton() {
	if(GPIO_2->SET == (1 << PIN_button))
	{
		GPIO_2->OUTPUT |= 1 << PIN_LED2;   //Установка значения вывода 7 порта 2 в высокий уровень
	}
	else
	{
		GPIO_2->OUTPUT &= ~(1 << PIN_LED2); //Установка значения вывода 7 порта  в низкий уровень
	}
}

void main() {
	initClock(); //включние тактирования GPIO2

	PAD_CONFIG->PORT_2_CFG |= (1 << (2 * PIN_LED2)); // Установка порта 2 в режим GPIO
	PAD_CONFIG->PORT_2_CFG |= (1 << (2 * PIN_button)); // Установка порта 2 в режим GPIO

	GPIO_2->DIRECTION_OUT = 1 << PIN_LED2; // Установка направления вывода  в выход
	GPIO_2->DIRECTION_IN = 1 << PIN_button; // Установка направления порта  в вход

	while (1) {
		ledBlink();
		//ledButton();
	}
}

Запуск скрипта

Скрипт mcu32flash.py нужно поместить в папку, в которой хранится hex файл. Сделать это можно в Visual Studio Code - рисунок 1.

Рисунок 1 - Размещение mcu32flash.py
Рисунок 2 - Контекстное меню

После этого нажать правой кнопкой мыши по файлу и выбрать "Открыть во встроенном терминале" как на рисунке 2.

Рисунок 3 - Терминал
Рисунок 4 - Фрагмент набора инструкций

Для запуска скрипта нужно в терминале написать "python.exe .\mcu32flash.py" и нажать "Enter" - рисунок 3.

Скрипт создаст файл "array.h" в папке, в которой расположен hex файл. В "array.h" находится массив "bin_data" с байтами, которые будут загружаться в чип памяти.

Загрузка программы в чип памяти

Полученный файл "array.h" следует переместить в папку "src" проекта SPIFI.

Инициализация SPIFI

Инициализация контроллера SPIFI проводится с помощью функции spifi_init, которая включает тактирование контроллера SPIFI на шине AHB.

Отправка команд

Для записи, чтения и стирания данных используются стандартные инструкции - рисунок 4.

Перед записью следует произвести стирание сектора или блока, в который будет производиться запись. В данном примере проводится стирание всей микросхемы.