Multi Media Card Library
Мультимедийная карта (MMC) является стандартом флэш-памяти. Карты MMC в настоящее время доступны в размерах вплоть до 32 ГБ и используются в сотовых телефонах, цифровых аудиоплеерах, цифровых камерах и КПК.
mikroPascal PRO для ARM предоставляет библиотеку для доступа к данным на Multi Media Card через связь SPI. Эта библиотека также поддерживает карты памяти SD (Secure Digital) и карты памяти высокой емкости SDHC (Secure Digital High Capacity).
Защищенная цифровая карта
Secure Digital (SD) - это стандарт флэш-памяти, основанный на более раннем формате мультимедийной карты (MMC).
SD-карты в настоящее время доступны в размерах до 2 ГБ включительно и используются в цифровых камерах, цифровых видеокамерах, карманных компьютерах, медиаплеерах, мобильных телефонах, GPS-приемниках, видеоиграх и КПК.
Защищенная цифровая карта высокой емкости
SDHC (Secure Digital High Capacity, SD 2.0) - это расширение стандарта SD, которое увеличивает емкость памяти до 32 ГБ, используя адресацию адреса вместо байтовой адресации в предыдущем стандарте SD.
Карты SDHC имеют тот же физический и электрический форм-фактор, что и старые (SD 1.x), что позволяет SDHC-устройствам поддерживать как новые SDHC-карты, так и более старые SD-карты. Текущий стандарт ограничивает максимальную емкость карты SDHC до 32 ГБ.
- Процедуры для обработки файлов могут использоваться только с файловой системой FAT16.
- Функции библиотеки создают и читают файлы только из корневого каталога.
- Функции библиотеки заполняют таблицы FAT1 и FAT2 при записи в файлы, но данные файла считываются только из таблицы FAT1; то есть нет восстановления, если таблица FAT1 повреждена.
- Если MMC / SD-карта имеет главную загрузочную запись (MBR), библиотека будет работать с первым доступным основным (логическим) разделом с ненулевым размером. Если на карте MMC / SD есть запись с томом (т. е. есть только один логический раздел и нет MBR), библиотека работает со всей картой как отдельный раздел. Для получения дополнительной информации о MBR, физических и логических дисках, первичных / вторичных разделах и таблицах разделов обратитесь к другим ресурсам, например. Википедия и тому подобное.
- Перед началом записи убедитесь, что вы не перезаписываете загрузку или сектор FAT, так как это может сделать вашу карту на ПК или цифровой камере нечитаемой. Инструменты картографирования диска, такие как Winhex, могут оказать большую помощь.
- Библиотека использует модуль SPI для связи. Пользователь должен инициализировать соответствующий SPI-модуль перед использованием библиотеки MMC.
- Для MCU с несколькими модулями SPI можно инициализировать все из них, а затем переключиться с помощью функции SPI_Set_Active (). См. функции библиотеки SPI Library.
Модуль SPI должен быть инициализирован с помощью процедуры SPIx_Init_Advanced со следующими параметрами:
- SPI Master
- 8bit mode
- secondary prescaler 1
- primary prescaler 64
- Slave Select disabled
- data sampled in the middle of data output time
- clock idle high
- Serial output data changes on transition from active clock state to idle clock state
Дерево зависимостей библиотеки
Внешние зависимости библиотеки MMC
Stellaris
Следующая переменная должна быть определена во всех проектах с использованием библиотеки MMC: | Описание: | Пример: |
---|---|---|
var Mmc_Chip_Select: sbit; sfr; external; |
Вывод Выбор кристалла | var Mmc_Chip_Select: sbit at GPIO_PORTA_DATA7_bit; |
var Mmc_Chip_Select_Direction: sbit; sfr; external; |
Направление вывода Выбор кристалла | var Mmc_Chip_Select_Direction: sbit at GPIO_PORTA_DIR7_bit; |
MSP432
Следующая переменная должна быть определена во всех проектах с использованием библиотеки MMC: | Описание: | Пример: |
---|---|---|
var Mmc_Chip_Select: sbit; sfr; external; |
Вывод Выбор кристалла | var Mmc_Chip_Select: sbit at DIO_P6OUT.B0; |
var Mmc_Chip_Select_Direction: sbit; sfr; external; |
Направление вывода Выбор кристалла | var Mmc_Chip_Select_Direction: sbit at DIO_P6OUT.B1; |
STM32
Следующая переменная должна быть определена во всех проектах с использованием библиотеки MMC: | Описание: | Пример: |
---|---|---|
var Mmc_Chip_Select: sbit; sfr; external; |
Вывод Выбор кристалла | var Mmc_Chip_Select: sbit at GPIOD_ODR.B3; |
CEC1x02
Следующая переменная должна быть определена во всех проектах с использованием библиотеки MMC: | Описание: | Пример: |
---|---|---|
var Mmc_Chip_Select: sbit; sfr; external; |
Вывод Выбор кристалла | var Mmc_Chip_Select: sbit at GPIO_OUTPUT_PIN_146_bit; |
Библиотечные процедуры
- Mmc_Init
- Mmc_Read_Sector
- Mmc_Write_Sector
- Mmc_Read_Cid
- Mmc_Read_Csd
- Mmc_Multi_Read_Start
- Mmc_Multi_Read_Sector
- Mmc_Multi_Read_Stop
- Mmc_Set_Interface
Процедуры для обработки файлов:
- Mmc_Fat_Init
- Mmc_Fat_QuickFormat
- Mmc_Fat_Assign
- Mmc_Fat_Reset
- Mmc_Fat_Read
- Mmc_Fat_Rewrite
- Mmc_Fat_Append
- Mmc_Fat_Delete
- Mmc_Fat_Write
- Mmc_Fat_Set_File_Date
- Mmc_Fat_Get_File_Date
- Mmc_Fat_Get_File_Date_Modified
- Mmc_Fat_Get_File_Size
- Mmc_Get_File_Write_Sector
- Mmc_Fat_Get_Swap_File
- Mmc_Fat_Tell
- Mmc_Fat_Seek
- Mmc_Fat_Rename
- Mmc_Fat_MakeDir
- Mmc_Fat_RenameDir
- Mmc_Fat_RemoveDir
- Mmc_Fat_ChangeDir
- Mmc_Fat_Exists
- Mmc_Fat_Dir
- Mmc_Fat_ReadDir
- Mmc_Fat_Activate
- Mmc_Fat_ReadN
- Mmc_Fat_Open
- Mmc_Fat_Close
- Mmc_Fat_EOF
Mmc_Init
Прототип |
function Mmc_Init(): word; |
---|---|
Описание |
Инициализирует MMC через аппаратный интерфейс SPI или SD I / O. Процедуру Mmc_Init необходимо вызвать перед использованием других функций этой библиотеки. |
Параметры |
Нет. |
Возвращает |
|
Требует |
Перед использованием этой функции необходимо определить внешние зависимости библиотеки от верхней части страницы. Соответствующий аппаратный SPI или SD I / O модуль должен быть предварительно инициализирован. |
Пример |
Stellaris// Подключение модулей MMC var MMC_chip_select : sbit at GPIO_PORTA_DATA7_bit; var MMC_chip_select_direction: sbit at GPIO_PORTA_DIR7_bit; // Подключение модулей MMC ... SPI0_Init_Advanced(400000, _SPI_MASTER, _SPI_8_BIT or _SPI_CLK_IDLE_HIGH or _SPI_SECOND_CLK_EDGE_TRANSITION, @_GPIO_MODULE_SPI0_A245); // Инициализировать MMC Mmc_Init(); // Повторно инициализировать модуль SPI на более высокой скорости SPI1_Init(); MSP432// MMC module connections var MMC_chip_select : sbit at DIO_P6OUT.B0; var MMC_chip_select_direction: sbit at DIO_P6DIR.B0; // Подключение модулей MMC SPI1_Init(); // Инициализировать MMC Mmc_Init(); STM32 with SPI
// Подключение модулей MMC
var MMC_chip_select : sbit at GPIOD_ODR.B3;
// Подключение модулей MMC
//--- инициализировать карту MMC
SPI3_Init_Advanced(_SPI_FPCLK_DIV64, _SPI_MASTER or _SPI_8_BIT or
_SPI_CLK_IDLE_LOW or _SPI_FIRST_CLK_EDGE_TRANSITION or
_SPI_MSB_FIRST or _SPI_SS_DISABLE or _SPI_SSM_ENABLE or _SPI_SSI_1,
@_GPIO_MODULE_SPI3_PC10_11_12);
// Инициализировать MMC
Mmc_Init();
// Повторно инициализировать модуль SPI на более высокой скорости
SPI3_Init_Advanced(_SPI_FPCLK_DIV2, _SPI_MASTER or _SPI_8_BIT or
_SPI_CLK_IDLE_LOW or _SPI_FIRST_CLK_EDGE_TRANSITION or
_SPI_MSB_FIRST or _SPI_SS_DISABLE or _SPI_SSM_ENABLE or _SPI_SSI_1,
@_GPIO_MODULE_SPI3_PC10_11_12);
STM32 with SDIO// Сброс модуля SDIO_Reset(); Delay_ms(100); // Частота SDIO_CK должна быть меньше 400 кГц в режиме идентификации SDIO_Init(_SDIO_CFG_POWER_SAVE_DISABLE or _SDIO_CFG_4_WIDE_BUS_MODE or _SDIO_CFG_CLOCK_BYPASS_DISABLE or _SDIO_CFG_CLOCK_RISING_EDGE or _SDIO_CFG_HW_FLOW_ENABLE, 120, @_GPIO_MODULE_SDIO_D0_D3); // Установка подтягивания на линиях SDIO (если нет внешних подтягиваний) GPIOD_PUPDR := GPIOD_PUPDR or 0x10; GPIOC_PUPDR := GPIOC_PUPDR or 0x550000; // Установить интерфейс SDIO Mmc_Set_Interface(_MMC_INTERFACE_SDIO); // Init MMC Mmc_Init(); // После инициализации MMC / SD-карты скорость SDIO (SDIO_CK) может быть увеличена SDIO_CLKCR := SDIO_CLKCR and not dword(0xff); SDIO_CLKCR := SDIO_CLKCR or dword(0x2); CEC1x02// Подключение модулей MMC var MMC_chip_select : sbit at GPIO_OUTPUT_PIN_146_bit; // Подключение модулей MMC // Инициализировать SPI SPI0_Init_Advanced(250000,0,0); // Init MMC Mmc_Init(); |
Замечания |
Нет. |
Mmc_Read_Sector
Прототип |
function Mmc_Read_Sector(sector: dword; var dbuff: array[512] of byte): word; |
---|---|
Описание |
Функция считывает один сектор (512 байт) с MMC-карты. |
Параметры |
|
Возвращает |
|
Требует |
MMC / SD-карта должна быть инициализирована. См. Mmc_Init. |
Пример |
// Считать сектор 510 MMC / SD-карты
var error: word;
sectorNo: dword;
dataBuffer: array[512] of byte;
...
sectorNo := 510;
error := Mmc_Read_Sector(sectorNo, dataBuffer);
|
Замечания |
Нет. |
Mmc_Write_Sector
Прототип |
function Mmc_Write_Sector(sector: dword; var data: array[512] of byte): word; |
---|---|
Описание |
Функция записывает 512 байт данных в один сектор карточек MMC. |
Параметры |
|
Возвращает |
|
Требует |
MMC / SD-карта должна быть инициализирована. См. Mmc_Init. |
Пример |
// Запись в сектор 510 карты MMC / SD
var error: word;
sectorNo: dword;
dataBuffer: array[512] of byte;
...
sectorNo := 510;
error := Mmc_Write_Sector(sectorNo, dataBuffer);
|
Замечания |
Нет. |
Mmc_Read_Cid
Прототип |
function Mmc_Read_Cid(var data_cid: array[16] of byte): word; |
---|---|
Описание |
Функция считывает 16-байтовый регистр CID. |
Параметры |
|
Возвращает |
|
Требует |
MMC / SD-карта должна быть инициализирована. См. Mmc_Init. |
Пример |
var error: word; dataBuffer: array[16] of byte; ... error := Mmc_Read_Cid(dataBuffer); |
Замечания |
Нет. |
Mmc_Read_Csd
Прототип |
function Mmc_Read_Csd(var data_for_registers: array[16] of byte): word; |
---|---|
Описание |
Функция считывает 16-байтовый регистр CSD. |
Параметры |
|
Возвращает |
|
Требует |
MMC / SD-карта должна быть инициализирована. См. Mmc_Init. |
Пример |
var error: word; dataBuffer: array[16] of byte; ... error := Mmc_Read_Csd(dataBuffer); |
Замечания |
Нет. |
Mmc_Multi_Read_Start
Прототип |
function Mmc_Multi_Read_Start(sector: dword): word; |
---|---|
Описание |
Функция запускает режим многократного чтения, секторы последовательно считываются, начиная с сектора, указанного в аргументе функции. |
Параметры |
|
Возвращает |
|
Требует |
MMC / SD-карта должна быть инициализирована. См. Mmc_Init. |
Пример |
var error: word;divarb> sector error := Mmc_Multi_Read_Start(sector); |
Замечания |
Нет. |
Mmc_Multi_Read_Sector
Прототип |
procedure Mmc_Multi_Read_Sector(var dbuff: array[512] of byte); |
---|---|
Описание |
Процедура считывает секторы в режиме многократного чтения и помещает их в буфер, указанный как аргумент функции. Следующий вызов функции считывает последующий сектор. Размер буфера должен быть 512B. |
Параметры |
|
Возвращает |
Ничего. |
Требует |
MMC / SD-карта должна быть инициализирована. См. Mmc_Init. |
Пример |
var dataBuffer: array[512] of byte; ... Mmc_Multi_Read_Sector(buffer); |
Замечания |
Нет. |
Mmc_Multi_Read_Stop
Прототип |
function Mmc_Multi_Read_Stop(): word; |
---|---|
Описание |
Функция останавливает последовательность режима многократного чтения. |
Параметры |
Нет. |
Возвращает |
|
Требует |
MMC / SD-карта должна быть инициализирована. См. Mmc_Init. |
Пример |
error := Mmc_Multi_Read_Stop; |
Замечания |
Нет. |
Mmc_Set_Interface
Прототип |
procedure Mmc_Set_Interface(setInterface: byte); |
||||||
---|---|---|---|---|---|---|---|
Описание |
Функция устанавливает используемый интерфейс MMC - SPI или SD I / O. |
||||||
Параметры |
|
||||||
Возвращает |
Ничего. |
||||||
Требует |
|
||||||
Пример |
// Set SDIO interface Mmc_Set_Interface(_MMC_INTERFACE_SDIO); |
||||||
Замечания |
|
Mmc_Fat_Init
Прототип |
function Mmc_Fat_Init(): byte; |
---|---|
Описание |
Инициализирует карту MMC / SD, читает загрузочный сектор MMC / SD FAT16 и извлекает необходимые данные, необходимые библиотеке. |
Параметры |
Нет. |
Возвращает |
|
Требует |
Перед использованием этой функции необходимо определить внешние зависимости библиотеки от верхней части страницы. Соответствующий аппаратный SPI-модуль должен быть предварительно инициализирован. |
Пример |
Stellaris
// Подключение модулей MMC
var MMC_chip_select : sbit at GPIO_PORTA_DATA7_bit;
var MMC_chip_select_direction: sbit at GPIO_PORTA_DIR7_bit;
// Подключение модулей MMC
...
SPI0_Init_Advanced(400000, _SPI_MASTER, _SPI_8_BIT or _SPI_CLK_IDLE_HIGH or _SPI_SECOND_CLK_EDGE_TRANSITION, @_GPIO_MODULE_SPI0_A245);
// Инициализировать MMC
if Mmc_Fat_Init() = 0 then
begin
...
// Повторно инициализировать модуль SPI на более высокой скорости
SPI0_Init_Advanced(10000000, _SPI_MASTER, _SPI_8_BIT or _SPI_CLK_IDLE_HIGH or _SPI_SECOND_CLK_EDGE_TRANSITION, @_GPIO_MODULE_SPI0_A245);
MSP432// MMC module connections var MMC_chip_select : sbit at DIO_P6OUT.B0; var MMC_chip_select_direction: sbit at DIO_P6DIR.B0; // Подключение модулей MMC ... SPI1_Init(); // Инициализировать MMC if Mmc_Fat_Init() = 0 then begin ... end; STM32// MMC module connections var MMC_chip_select : sbit at GPIOD_ODR.B3; // Подключение модулей MMC //--- инициализировать карту MMC SPI3_Init_Advanced(_SPI_FPCLK_DIV64, _SPI_MASTER or _SPI_8_BIT or _SPI_CLK_IDLE_LOW or _SPI_FIRST_CLK_EDGE_TRANSITION or _SPI_MSB_FIRST or _SPI_SS_DISABLE or _SPI_SSM_ENABLE or _SPI_SSI_1, @_GPIO_MODULE_SPI3_PC10_11_12); // Инициализировать MMC if Mmc_Fat_Init() = 0 then begin ... // Повторно инициализировать модуль SPI на более высокой скорости SPI3_Init_Advanced(_SPI_FPCLK_DIV2, _SPI_MASTER or _SPI_8_BIT or _SPI_CLK_IDLE_LOW or _SPI_FIRST_CLK_EDGE_TRANSITION or _SPI_MSB_FIRST or _SPI_SS_DISABLE or _SPI_SSM_ENABLE or _SPI_SSI_1, @_GPIO_MODULE_SPI3_PC10_11_12); CEC1x02// Подключение модулей MMC var MMC_chip_select : sbit at GPIO_OUTPUT_PIN_146_bit; // Подключение модулей MMC ... //--- настроить SPI для MMC init (низкая скорость) SPI0_Init_Advanced(250000,0,0); // Инициализировать MMC if Mmc_Fat_Init() = 0 then begin ... // повторно инициализировать spi на более высокой скорости SPI0_Init_Advanced(10000000,0,0); ... |
Замечания |
Карта MMC / SD должна быть отформатирована в файловой системе FAT16. |
Mmc_Fat_QuickFormat
Прототип |
function Mmc_Fat_QuickFormat(var mmc_fat_label: string[11]): word; |
---|---|
Описание |
Форматирует FAT16 и инициализирует MMC / SD-карту. |
Параметры |
|
Возвращает |
|
Требует |
Соответствующий аппаратный SPI-модуль должен быть предварительно инициализирован. |
Пример |
Stellaris... SPI0_Init_Advanced(400000, _SPI_MASTER, _SPI_8_BIT or _SPI_CLK_IDLE_HIGH or _SPI_SECOND_CLK_EDGE_TRANSITION, @_GPIO_MODULE_SPI0_A245); // Форматировать и инициализировать MMC / SD-карту и глобальные библиотеки MMC_FAT16 Mmc_Fat_QuickFormat('mikroE'); // Повторно инициализировать модуль SPI на более высокой скорости SPI0_Init_Advanced(10000000, _SPI_MASTER, _SPI_8_BIT or _SPI_CLK_IDLE_HIGH or _SPI_SECOND_CLK_EDGE_TRANSITION, @_GPIO_MODULE_SPI0_A245); ... MSP432
SPI1_Init();
// Форматировать и инициализировать MMC / SD-карту и глобальные библиотеки MMC_FAT16
Mmc_Fat_QuickFormat('mikroE');
STM32... SPI3_Init_Advanced(_SPI_FPCLK_DIV64, _SPI_MASTER or _SPI_8_BIT or _SPI_CLK_IDLE_LOW or _SPI_FIRST_CLK_EDGE_TRANSITION or _SPI_MSB_FIRST or _SPI_SS_DISABLE or _SPI_SSM_ENABLE or _SPI_SSI_1, @_GPIO_MODULE_SPI3_PC10_11_12); // Форматировать и инициализировать MMC / SD-карту и глобальные библиотеки MMC_FAT16 Mmc_Fat_QuickFormat('mikroE'); // Повторно инициализировать модуль SPI на более высокой скорости SPI3_Init_Advanced(_SPI_FPCLK_DIV2, _SPI_MASTER or _SPI_8_BIT or _SPI_CLK_IDLE_LOW or _SPI_FIRST_CLK_EDGE_TRANSITION or _SPI_MSB_FIRST or _SPI_SS_DISABLE or _SPI_SSM_ENABLE or _SPI_SSI_1, @_GPIO_MODULE_SPI3_PC10_11_12); ... CEC1x02// настроить SPI для MMC init (низкая скорость) SPI0_Init_Advanced(250000,0,0); Mmc_Fat_QuickFormat('mikroE'); // повторно инициализировать spi на более высокой скорости SPI0_Init_Advanced(10000000,0,0); |
Замечания |
Эта процедура может использоваться вместо или в сочетании с процедурой Mmc_Fat_Init. Если карта MMC / SD уже содержит действительный загрузочный сектор, она останется неизменной (кроме поля Mетка тома), и будут удалены только таблицы FAT и ROOT. Также будет установлена новая Метка тома. |
Mmc_Fat_Assign
Прототип |
function Mmc_Fat_Assign(var filename: array[12] of char; file_cre_attr: byte): word; |
|||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Описание |
Назначает файл для операций с файлами (чтение, запись, удаление ...). Все последующие операции с файлами будут применены к назначенному файлу. |
|||||||||||||||||||||||||||
Параметры |
|
|||||||||||||||||||||||||||
Возвращает |
|
|||||||||||||||||||||||||||
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. |
|||||||||||||||||||||||||||
Пример |
// создать файл с Архивным атрибутом, если он еще не существует
Mmc_Fat_Assign('MIKRO007.TXT',0xA0);
|
|||||||||||||||||||||||||||
Замечания |
Long File Names (LFN) are not supported. |
Mmc_Fat_Reset
Прототип |
procedure Mmc_Fat_Reset(var size: dword); |
---|---|
Описание |
Процедура сбрасывает указатель файла (перемещает его в начало файла) назначенного файла, чтобы файл можно было прочитать. |
Параметры |
|
Возвращает |
Ничего. |
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. Файл должен быть предварительно назначен. См. Mmc_Fat_Assign. |
Пример |
var size: dword; ... Mmc_Fat_Reset(size); |
Замечания |
Нет. |
Mmc_Fat_Read
Прототип |
procedure Mmc_Fat_Read(var bdata_: byte); |
---|---|
Описание |
Считывает байт из текущего назначенного файла, открытого для чтения. После выполнения функции указатели файлов будут установлены на следующий символ в файле. |
Параметры |
|
Возвращает |
Ничего. |
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. Файл должен быть предварительно назначен. См. Mmc_Fat_Assign. Файл должен быть открыт для чтения. См. Mmc_Fat_Reset. |
Пример |
var character: byte; ... Mmc_Fat_Read(character); |
Замечания |
Нет. |
Mmc_Fat_Rewrite
Прототип |
procedure Mmc_Fat_Rewrite(); |
---|---|
Описание |
Открывает текущий файл для записи. Если файл не пуст, его содержимое будет удалено. |
Параметры |
Нет. |
Возвращает |
Ничего. |
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. Файл должен быть предварительно назначен. См. Mmc_Fat_Assign. |
Пример |
// open file for writing Mmc_Fat_Rewrite(); |
Замечания |
Нет. |
Mmc_Fat_Append
Прототип |
procedure Mmc_Fat_Append(); |
---|---|
Описание |
Открывает текущий файл для добавления. После этой функции указатели файлов выполнения будут помещены после последнего байта в файл, поэтому после этого начнется любая последующая операция записи файла. |
Параметры |
Нет. |
Возвращает |
Ничего. |
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. Файл должен быть предварительно назначен. См. Mmc_Fat_Assign. |
Пример |
// открыть файл для добавления
Mmc_Fat_Append();
|
Замечания |
Нет. |
Mmc_Fat_Delete
Прототип |
procedure Mmc_Fat_Delete(); |
---|---|
Описание |
Удаляет текущий файл с карты MMC / SD. |
Параметры |
Нет. |
Возвращает |
Ничего. |
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. Файл должен быть предварительно назначен. См. Mmc_Fat_Assign. |
Пример |
// dудалить текущий файл
Mmc_Fat_Delete();
|
Замечания |
Нет. |
Mmc_Fat_Write
Прототип |
procedure Mmc_Fat_Write(var fdata: array[512] of byte; data_len: word); |
---|---|
Описание |
Записывает запрошенное количество байтов в текущий назначенный файл, открытый для записи. |
Параметры |
|
Возвращает |
Ничего. |
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. Файл должен быть предварительно назначен. См. Mmc_Fat_Assign. Файл должен быть открыт для записи. См. Mmc_Fat_Rewrite or Mmc_Fat_Append. |
Пример |
var file_contents: array[42] of byte;
...
Mmc_Fat_Write(file_contents, 42);// записываем данные в назначенный файл
|
Замечания |
Нет. |
Mmc_Fat_Set_File_Date
Прототип |
procedure Mmc_Fat_Set_File_Date(year: word; month: byte; day: byte; hours: byte; mins: byte; seconds: byte); |
---|---|
Описание |
Устанавливает метку даты / времени. Любая последующая операция записи файла будет записывать этот штамп в атрибуты времени / даты в настоящее время назначенного файла. |
Параметры |
|
Возвращает |
Ничего. |
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. Файл должен быть предварительно назначен. См. Mmc_Fat_Assign. Файл должен быть открыт для записи. См. Mmc_Fat_Rewrite или Mmc_Fat_Append. |
Пример |
// April 1st 2005, 18:07:00 Mmc_Fat_Set_File_Date(2005, 4, 1, 18, 7, 0); |
Замечания |
Нет. |
Mmc_Fat_Get_File_Date
Прототип |
procedure Mmc_Fat_Get_File_Date(var year: word; var month: byte; var day: byte; var hours: byte; var mins: byte); |
---|---|
Описание |
Считывает атрибуты времени и даты для текущего файла. |
Параметры |
|
Возвращает |
Ничего. |
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. Файл должен быть предварительно назначен.См. Mmc_Fat_Assign. |
Пример |
var year: word; month, day, hours, mins: byte; ... Mmc_Fat_Get_File_Date(year, month, day, hours, mins); |
Замечания |
Нет. |
Mmc_Fat_Get_File_Date_Modified
Прототип |
procedure Mmc_Fat_Get_File_Date_Modified(var year: word; var month: byte; var day: byte; var hours: byte; var mins: byte); |
---|---|
Описание |
Получает последнюю дату / время изменения для текущего выбранного файла. Секунды не восстанавливаются, так как они записываются с шагом в 2 секунды. |
Параметры |
|
Возвращает |
Ничего. |
Требует |
Файл должен быть назначен, см. Mmc_Fat_Assign. |
Пример |
var year: word; month, day, hours, mins: byte; ... Mmc_Fat_Get_File_Date_Modified(year, month, day, hours, mins); |
Mmc_Fat_Get_File_Size
Прототип |
function Mmc_Fat_Get_File_Size(): dword; |
---|---|
Описание |
Эта функция считывает размер текущего назначенного файла в байтах. |
Параметры |
Нет. |
Возвращает |
Эта функция возвращает размер активного файла (в байтах). |
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. Файл должен быть предварительно назначен. См. Mmc_Fat_Assign. |
Пример |
var my_file_size: dword; ... my_file_size := Mmc_Fat_Get_File_Size(); |
Замечания |
Нет. |
Mmc_Get_File_Write_Sector
Прототип |
function Mmc_Get_File_Write_Sector(): dword; |
---|---|
Описание |
Эта функция возвращает текущий сектор записи файла. |
Параметры |
Нет. |
Возвращает |
Эта функция возвращает текущий сектор записи файла. |
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. Файл должен быть предварительно назначен. См. Mmc_Fat_Assign. |
Пример |
var sector: dword; ... sector := Mmc_Get_File_Write_Sector(); |
Замечания |
Нет. |
Mmc_Fat_Get_Swap_File
Прототип |
function Mmc_Fat_Get_Swap_File(sectors_cnt: dword; var filename: string[11]; file_attr: byte): dword; |
|||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Описание |
Эта функция используется для создания файла подкачки с предопределенным именем и размером на носителе MMC / SD. Если файл с указанным именем уже существует на носителе, поиск последовательных секторов будет игнорировать сектора, занятые этим файлом. Поэтому рекомендуется удалить этот файл, если он уже существует до вызова этой функции. Если он не стирается и все еще достаточно места для нового файла подкачки, эта функция удалит его после выделения нового пространства памяти для нового файла подкачки. Цель файла подкачки - сделать запись и запись на носитель MMC / SD как можно быстрее, используя функции Mmc_Read_Sector () и Mmc_Write_Sector () напрямую, без потенциального повреждения системы FAT. Файл подкачки можно рассматривать как «окно» на носителе, где пользователь может свободно писать / читать данные. Основная цель этой библиотеки - использовать ее для быстрого сбора данных; когда критическое время завершено, данные могут быть переписаны в «обычный» файл и отформатированы наиболее подходящим образом. |
|||||||||||||||||||||||||||
Параметры |
|
|||||||||||||||||||||||||||
Возвращает |
|
|||||||||||||||||||||||||||
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. |
|||||||||||||||||||||||||||
Пример |
//-------------- Попытка создания файла подкачки с атрибутом архива, размер которого будет составлять не менее 1000 секторов. // Если это удастся, процедура отправляет количество начального сектора по UART var size: dword; ... size := Mmc_Fat_Get_Swap_File(1000, 'mikroE.txt', 0x20); if (size <> 0) then begin UART1_Write(0xAA); UART1_Write(Lo(size)); UART1_Write(Hi(size)); UART1_Write(Higher(size)); UART1_Write(Highest(size)); UART1_Write(0xAA); end; |
|||||||||||||||||||||||||||
Замечания |
Длинные имена файлов (LFN) не поддерживаются. |
Mmc_Fat_Tell
Прототип |
function Mmc_Fat_Tell(): dword; |
---|---|
Описание |
Эта процедура используется для получения позиции курсора в открытом файле. |
Параметры |
Нет. |
Возвращает |
Возвращаетположение курсора в текущем назначенном файле. |
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. Файл должен быть предварительно назначен. См. Mmc_Fat_Assign. |
Пример |
var position: dword; position := Mmc_Fat_Tell(); |
Замечания |
Нет. |
Mmc_Fat_Seek
Прототип |
function Mmc_Fat_Seek(position: dword): dword; |
---|---|
Описание |
Эта процедура используется для установки позиции курсора в открытом файле и возвращает новую позицию курсора в открытом файле. |
Параметры |
|
Возвращает |
Возвращаетновое положение курсора в текущем назначенном файле. |
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. Файл должен быть предварительно назначен. См. Mmc_Fat_Assign. |
Пример |
var position: dword; position := Mmc_Fat_Seek(1000); |
Замечания |
Если желаемая позиция курсора превышает размер файла, курсор будет помещен в конец файла. |
Mmc_Fat_Rename
Прототип |
function Mmc_Fat_Rename(newname: ^char): char; |
---|---|
Описание |
Эта функция переименовывает текущий назначенный файл. |
Параметры |
|
Возвращает |
|
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. Файл должен быть предварительно назначен. См. Mmc_Fat_Assign. |
Пример |
if (0 = Mmc_Fat_Rename('NEWNAME.TXT')) then // если операция переименования была успешной ...
begin
...
end;
|
Замечания |
Нет. |
Mmc_Fat_MakeDir
Прототип |
function Mmc_Fat_MakeDir(name: ^char; attrib: char): char; |
---|---|
Описание |
Эта функция создает новый каталог. |
Параметры |
|
Возвращает |
|
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. |
Пример |
if (0 = Mmc_Fat_MakeDir('DIR_A', 0xA0))) then begin // create DIR_A directory ... end; |
Замечания |
Нет. |
Mmc_Fat_RenameDir
Прототип |
function Mmc_Fat_RenameDir(oldname: ^char; newname: ^char): char; |
---|---|
Описание |
Эта функция переименовывает каталог. |
Параметры |
|
Возвращает |
|
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. |
Пример |
if (0 = Mmc_Fat_RenameDir('DIR_A', 'DIR_B')) // if rename operation was successful... begin ... end; |
Замечания |
Нет. |
Mmc_Fat_RemoveDir
Прототип |
function Mmc_Fat_RemoveDir(name: ^char): char; |
---|---|
Описание |
Эта функция удаляет запись каталога из текущего каталога. |
Параметры |
|
Возвращает |
|
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. |
Пример |
if (0 = Mmc_Fat_RemoveDir('DIR_A')) then //если операция удаления была успешной ...
begin
...
end;
|
Замечания |
Рекурсивное удаление не поддерживается, т. е. Каталог должен быть пустым, прежде чем его можно будет удалить. |
Mmc_Fat_ChangeDir
Прототип |
function Mmc_Fat_ChangeDir(name: ^char): char; |
---|---|
Описание |
Эта функция меняет текущий каталог на имя. |
Параметры |
|
Возвращает |
|
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. |
Пример |
// входим в DIR_A каталог if (0 = Mmc_Fat_ChangeDir('DIR_A')) then begin ... end; // переходим в родительский каталог if (0 = Mmc_Fat_ChangeDir('..')) then begin ... end; // переходим в корневой каталог if (0 = Mmc_Fat_ChangeDir('\')) then begin ... end; |
Замечания |
Специальные имена каталогов, такие как «.» и ".." также поддерживаются. |
Mmc_Fat_Exists
Прототип |
function Mmc_Fat_Exists(name: ^char): char; |
---|---|
Описание |
Эта функция возвращает информацию о существовании файла / каталога. |
Параметры |
|
Возвращает |
|
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. |
Пример |
status := Mmc_Fat_Exists('X_FILES.TXT'); // iПроцесс прошел успешно ... if (0 = status) then begin ... end; // если произошла ошибка ... if (255 = status) then begin ... end; |
Замечания |
Нет. |
Mmc_Fat_Dir
Прототип |
function Mmc_Fat_Dir(print: ^TProcedure): byte; |
---|---|
Описание |
Эта процедура отображает содержимое текущего каталога через пользовательский носитель (т. е. Модуль UART, файл в файловой системе FAT16). Функция отображает символ по символу. |
Параметры |
|
Возвращает |
|
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. |
Пример |
type TProcedure = procedure(ch: char);
// Отображающая подпрограмма
procedure PrintChar(ch: char);
begin
UART1_Write(ch);
end;
...
Mmc_Fat_Dir(@PrintChar);
|
Замечания |
Нет. |
Mmc_Fat_ReadDir
Прототип |
function Mmc_Fat_ReadDir(var d: F16_DIR): short; |
---|---|
Описание |
Эта функция получает следующую запись каталога из текущего каталога. |
Параметры |
|
Возвращает |
|
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. |
Пример |
if (1 = Mmc_Fat_ReadDir('DIR_A')) then begin ... end; |
Замечания |
Нет. |
Mmc_Fat_Activate
Прототип |
function Mmc_Fat_Activate(fileHandle: short): byte; |
---|---|
Описание |
Эта функция выбирает активный файл открытых файлов. |
Параметры |
|
Возвращает |
|
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. |
Пример |
|
Замечания |
Используйте Mmc_Fat_Openчтобы получить файловые дескрипторы. |
Mmc_Fat_ReadN
Прототип |
function Mmc_Fat_ReadN(fdata: ^byte; n: word): word; |
---|---|
Описание |
Эта функция считывает несколько байтов. |
Параметры |
|
Возвращает |
Количество прочитанных байтов. |
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. |
Пример |
|
Замечания |
Нет. |
Mmc_Fat_Open
Прототип |
function Mmc_Fat_Open(var name: array[12] of char; mode, attrib: byte): short; |
|||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Описание |
Эта функция открывает файл для манипуляций. |
|||||||||||||||||||||||||||
Параметры |
|
|||||||||||||||||||||||||||
Возвращает |
|
|||||||||||||||||||||||||||
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. |
|||||||||||||||||||||||||||
Пример |
|
|||||||||||||||||||||||||||
Замечания |
Нет. |
Mmc_Fat_Close
Прототип |
function Mmc_Fat_Close(): byte; |
---|---|
Описание |
Эта функция закрывает открытый файл. |
Параметры |
Нет. |
Возвращает |
|
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. |
Пример |
|
Замечания |
Нет. |
Mmc_Fat_EOF
Прототип |
function Mmc_Fat_EOF(): short; |
---|---|
Описание |
Эта функция проверяет, достигнут ли конец файла. |
Параметры |
Нет. |
Возвращает |
|
Требует |
MMC / SD-карта и MMC-библиотека должны быть инициализированы для файловых операций. См. Mmc_Fat_Init. |
Пример |
|
Замечания |
Нет. |