Stm32L-Дискавери + Фдд

Для подключения STM32L-DISCOVERY к FDD вам понадобятся 4 провода и 2 перемычки.



STM32L-ДИСКАВЕРИ + ФДД



Все, что вам нужно знать о флоппи-дисководе

P.S: Сейчас ночь, это моя первая заметка на эту тему, особых знаний у меня нет, все подробно описано на тематических ресурсах, но мне пришлось потратить немало времени, чтобы разобраться.

Есть планы сделать его из дисковода РТТТЛ игрок.



С чего начать?

Если посмотреть распиновку разъема, то все входы/выходы четные, нечетные контакты заземлены (GND).

На приводе должен быть зазор, чтобы правильно вставить кабель переверните аппарат зазором вниз, верхняя левая ножка - 2.

STM32L-ДИСКАВЕРИ + ФДД

Установите перемычку на контакты 12-11 («Drive Sel B» с GND), на передней панели привода загорится светодиод, затем перемычку на контакты 16-15 («Motor Enable B» с GND) диск загорится.

начать вращаться.



Логические уровни ТТЛ

В любом случае в качестве электрического интерфейса гибкого интерфейса использовалось TTL 5 В, что также соответствовало уровням переключения LVTTL.
На выходах отладочной платы логическая единица составляет 3,3В, а интерфейс FDD использует 5В, а это значит, что FDD нужно подключать к контактам «5v толерантным».

Чтобы их найти, просто откройте техническая спецификация контроллер СТМ32L152RBT6 , который установлен на STM32L-DISCOVERY, и посмотрите таблицу «.

определения контактов».

Если в графе «Структура ввода-вывода» стоит «FT» (пятивольтовый толерантный), то на вывод можно смело подавать 5В.

От подробное руководство мы знаем логические уровни TTL

Входное высокое напряжение 2,0 В и входное низкое напряжение 0,8 В.

Выходное высокое напряжение 2,4 В и входное низкое напряжение 0,5 В.

это значит, что 3,3В нам достаточно для питания логической единицы.

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

Привод имеет стандартный разъем питания .



STM32L-ДИСКАВЕРИ + ФДД

Припаиваем два провода к плате привода (контакты 1 и 2) и подключаем их к EXT_5V и GND на STM32L-DISCOVERY.

Как управлять ФДД?

Для управления приводом шагового двигателя используются два контакта, 18 DIR «Направление» и 20 STEP «Шаг».

Сначала нужно задать направление движения, установив LOW (0) или HIGH (1) в DIR, а затем переместить головку на одну дорожку:

Шаг = НИЗКИЙ Задержка (1 мс) Шаг = ВЫСОКИЙ


Написание тестовой прошивки

Источник
   

#include "stm32l1xx.h" #include "stm32l1xx_rcc.h" #define DIR GPIO_Pin_1 // 18 // PA1 #define STEP GPIO_Pin_2 // 20 // PA2 void delay_ms(uint32_t delay) { TIM6->PSC = 2096; TIM6->ARR = delay; TIM6->EGR |= TIM_EGR_UG; TIM6->CR1 |= TIM_CR1_CEN|TIM_CR1_OPM; while ( (TIM6->CR1 & TIM_CR1_CEN) != 0); } void InitPeriph() { GPIO_InitTypeDef GPIOConfig; GPIOConfig.GPIO_Speed = GPIO_Speed_40MHz; GPIOConfig.GPIO_Mode = GPIO_Mode_OUT; GPIOConfig.GPIO_OType = GPIO_OType_PP; GPIOConfig.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIOConfig.GPIO_Pin = DIR | STEP; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE); GPIO_Init(GPIOA,&GPIOConfig); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE); } void move() { GPIO_ResetBits(GPIOA,STEP); delay_ms(1); GPIO_SetBits(GPIOA,STEP); } int main() { int i; InitPeriph(); for(;;) { GPIO_ResetBits(GPIOA,DIR); for(i=0;i<100;i++) { move(); } delay_ms(1000); GPIO_SetBits(GPIOA,DIR); for(i=0;i<100;i++) { move(); } delay_ms(2500); } }

Настраиваем порты GPIO для вывода обычного логического сигнала, включаем тактирование выходного порта и 6 таймеров общего назначения.

Автобусы, к которым они подключены, можно посмотреть в даташите.

Далее в бесконечном цикле крутим шаговый двигатель на 100 дорожек, потом туда-сюда.

Магическое число 2096 — это стандартная внутренняя рабочая частота этого контроллера (2,097 МГц).

Теги: #stm32 #arm #DIY или Сделай сам #ttl #FDD

Вместе с данным постом часто просматривают: