Для подключения STM32L-DISCOVERY к FDD вам понадобятся 4 провода и 2 перемычки.
Все, что вам нужно знать о флоппи-дисководе
- Распиновка дисковода гибких дисков - очень подробно;
- Подключение флоппи-дисковода — вот псевдокод операций чтения и записи;
- Дуиномит играет Имперский марш — пример подключения устройства.
Есть планы сделать его из дисковода РТТТЛ игрок.
С чего начать?
Если посмотреть распиновку разъема, то все входы/выходы четные, нечетные контакты заземлены (GND).
На приводе должен быть зазор, чтобы правильно вставить кабель переверните аппарат зазором вниз, верхняя левая ножка - 2.
Установите перемычку на контакты 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 В.это значит, что 3,3В нам достаточно для питания логической единицы.Выходное высокое напряжение 2,4 В и входное низкое напряжение 0,5 В.
В идеале для согласования логических уровней устройства должны иметь общую землю, поэтому питание отладочной платы мы будем осуществлять непосредственно от накопителя.
Привод имеет стандартный разъем питания .
Припаиваем два провода к плате привода (контакты 1 и 2) и подключаем их к EXT_5V и GND на STM32L-DISCOVERY.
Как управлять ФДД?
Для управления приводом шагового двигателя используются два контакта, 18 DIR «Направление» и 20 STEP «Шаг».Сначала нужно задать направление движения, установив LOW (0) или HIGH (1) в DIR, а затем переместить головку на одну дорожку:
Шаг = НИЗКИЙ Задержка (1 мс) Шаг = ВЫСОКИЙ
Написание тестовой прошивки
ИсточникНастраиваем порты GPIO для вывода обычного логического сигнала, включаем тактирование выходного порта и 6 таймеров общего назначения.#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); } }
Автобусы, к которым они подключены, можно посмотреть в даташите.
Далее в бесконечном цикле крутим шаговый двигатель на 100 дорожек, потом туда-сюда.
Магическое число 2096 — это стандартная внутренняя рабочая частота этого контроллера (2,097 МГц).
Теги: #stm32 #arm #DIY или Сделай сам #ttl #FDD
-
Один День Из Жизни Орла За Несколько Секунд
19 Oct, 24 -
Дарим Роботов На Новый Год
19 Oct, 24