Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Библиотеки для USB
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
Androliz
Нужно сделать устройство к которому можно подключать USB flash память. Микроконтроллер LPC2388 с usb host внутри. Но ходят слухи что реализация поддержки USB flash довольно сложная штука. Может кто-нибудь реализовывал подобное. Может у кого есть библиотеки котоырми он может поделиться или ссылки.
aag
Может проще не usb-flash подключать, а sd-карточку?
torik
А SD-карточку проще? Как с ней вообще работать-то?
arizona
У Микрочипа несколько апнот и с СД картой и флэшкой. Под PIC24 и PIC32 с USB OTG
ControllerZ
Цитата(torik @ Sep 16 2008, 11:53) *
А SD-карточку проще? Как с ней вообще работать-то?

С сд картой конечно же проще. Работать с ней через SPI интерфес, если нужно могу скинуть исходники работы с картой на PIC'е

Чегото на пик найти немогу вот мой вариант работы на авр с карточкой MMC

CODE

.device AT90S2313

;***** I/O Register Definitions
.equ SREG =$3f
.equ SPL =$3d
.equ GIMSK =$3b
.equ GIFR =$3a
.equ TIMSK =$39
.equ TIFR =$38
.equ MCUCR =$35
.equ TCCR0 =$33
.equ TCNT0 =$32
.equ TCCR1A =$2f
.equ TCCR1B =$2e
.equ TCNT1H =$2d
.equ TCNT1L =$2c
.equ OCR1AH =$2b
.equ OCR1AL =$2a
.equ ICR1H =$25
.equ ICR1L =$24
.equ WDTCR =$21
.equ EEAR =$1e
.equ EEARL =$1e
.equ EEDR =$1d
.equ EECR =$1c
.equ PORTB =$18
.equ DDRB =$17
.equ PINB =$16
.equ PORTD =$12
.equ DDRD =$11
.equ PIND =$10


.def temp = r16
.def byte = r17
.def byte_read = r18

.def arg0 = r19
.def arg1 = r20
.def arg2 = r21
.def arg3 = r22
.def crc7 = r23
.def errmmc = r23
.def cmd = r24

.equ clk =0
.equ do =2
.equ di =1
.equ cs =3


.cseg ; CODE segment.

.org 0
rjmp init ;Reset
reti ;INT 0
reti ;Pin Change
reti ;Output compare
reti ;Timer 1
reti ;Timer 0
reti ;EEPROM ready
reti ;Analog Comparator




;Main Routine
init:
ldi r16, $DF
out SPL, r16
rcall PORT_SETUP
rcall MMC_RESSET


ldi cmd, 16
ldi arg0, $0
ldi arg1, $0
ldi arg2, $02
ldi arg3, $0
ser crc7
rcall MMC_CMD

rcall MMC_CLK_FF

ldi cmd, 17
clr arg0
clr arg1
ldi arg2, $02
clr arg3
ser crc7
rcall MMC_CMD

rcall MMC_CLK_FF
rcall MMC_CLK_FF
cpi byte_read, $fe
brne end_er

ldi temp, 0
READMMC:
rcall SPI_SEND_FF
dec temp
brne READMMC
READMMC_1:
rcall SPI_SEND_FF
dec temp
brne READMMC_1

; rcall MMC_CLK_FF
;

; ldi cmd, 16
; ldi arg0, $0
; ldi arg1, $0
; ldi arg2, $02
; ldi arg3, $0
; ser crc7
; rcall MMC_CMD
;
; rcall MMC_CLK_FF
;
; ldi cmd, 24
; ldi arg0, $0
; ldi arg1, $0
; ldi arg2, $0
; ldi arg3, $0
; ser crc7
; rcall MMC_CMD
; rcall MMC_CLK_FF
; cpi byte_read, $FF
; breq end_er
;
; rcall SPI_SEND_FF
; rcall SPI_SEND_FF
; ldi byte, $FE
; rcall SPI_SEND
;
; clr temp
; clr byte
;MET:
; rcall SPI_SEND
; inc byte
; dec temp
; brne MET
;
; clr temp
;MET1:
; rcall SPI_SEND
; inc byte
; dec temp
; brne MET1
;
; rcall MMC_CLK_FF
; rcall MMC_CLK_FF
; andi byte_read, $1F
;
; out PORTB, byte_read

LOOP:
rjmp LOOP

end_er:
sbi PORTB, 0
rjmp end_er

end_OK:
sbi PORTB, 7
rjmp end_OK

PORT_SETUP:
push r16
clr r16
out PORTD, r16
out PORTB, r16
out DDRB, r16
ldi r16, $0D
out DDRD, r16
pop r16
ret

MMC_CMD:
push temp
push byte

mov byte, cmd
ori byte, $40
rcall SPI_SEND

mov byte, arg0
rcall SPI_SEND

mov byte, arg1
rcall SPI_SEND

mov byte, arg2
rcall SPI_SEND

mov byte, arg3
rcall SPI_SEND

mov byte, crc7
rcall SPI_SEND

pop byte
pop temp
ret

MMC_CLK_FF:
push temp
ldi temp, $FF
rjmp MMC_CLK_1
MMC_CLK:
push temp
ldi temp, $10
MMC_CLK_1:
rcall SPI_SEND_FF
cpi byte_read, $FF
brne MMC_CLk_2
dec temp
brne MMC_CLk_1
MMC_CLK_2:
pop temp
ret

MMC_RESSET:
push byte
push temp
rcall SPI_CS_1
ldi temp, $10
MMC_RESSET_1:
rcall SPI_SEND_FF
dec temp
brne MMC_RESSET_1
rcall SPI_CS_0

ldi cmd, 0
clr arg0
clr arg1
clr arg2
clr arg3
ldi crc7, $95
rcall MMC_CMD


ldi temp, $10
MMC_RESSET_2:
rcall SPI_SEND_FF
cpi byte_read, $FF
brne MMC_RESSET_3
dec temp
brne MMC_RESSET_2
ldi temp, $FF
MMC_RESSET_3:
dec temp
breq MMC_RESSET_4
ldi cmd, 1
clr arg0
clr arg1
clr arg2
clr arg3
ser crc7
rcall MMC_CMD
rcall MMC_CLK_FF
cpi byte_read, $00
brne MMC_RESSET_3
MMC_RESSET_4:
; rcall MMC_CLK

pop temp
pop byte
ret

SPI_SEND_FF:
push r16
push byte

ldi r16, $08
ldi byte, $FF
rjmp SPI_SEND_1
SPI_SEND:
push r16
push byte

ldi r16, $08
SPI_SEND_1:
cbi PORTD, clk
cbi PORTD, do
sbrc byte, 7
sbi PORTD, do
sbi PORTD, clk
rol byte

lsl byte_read
sbic PIND, di
ori byte_read, 1

dec r16
brne SPI_SEND_1

cbi PORTD, clk
sbi PORTD, do

pop byte
pop r16
ret

SPI_CS_0:
cbi PORTD, cs
ret

SPI_CS_1:
sbi PORTD, cs
ret
drovik
Началось все с ARM'а, прошло через PIC'и и закончилось AVR'ом biggrin.gif

По теме: если нет времени напрягать мозги, можно напрячь кошелек, готовые решения уже есть. Кстати, а что за операционку собираетесь использовать ?
Kuzmi4
Если кому есчё интересно - как то уважаемый bloodden выложил сдесь по моей просьбе исходники для меги работы с SD-картой для SPI-интерфейса на файловой от ChaN (FAT16) - там музло проигрывается на меге с карточки - в принципе, на сколько я помню, там разделена аппаратно-завсисимая и софтовая часть, можно портировать. Кому интересно могу выложить - пока руки не доходят покрутить(тоже копаю под этот зловредный USB)...

2 torik - а вам мому порекомендовать сд-корку от эль-камино - wink.gif - гдо валялась у меня вылеченная, пока тоже руки не дошли её потестить. Всё же лучше чем проц нагружать biggrin.gif .
K0l0b0ck
Цитата(Kuzmi4 @ Sep 19 2008, 11:15) *
Кому интересно могу выложить

Выложи, если не затруднит, есть желание разобраться..
ReAl
Цитата(ControllerZ @ Sep 19 2008, 07:06) *
Чегото на пик найти немогу вот мой вариант работы на авр с карточкой MMC

Пожалуйста, такие длинные вставки или присоединяйте к сообщению как файл, или оформляйте тегами CODEBOX, а не CODE, тогда вместо длииииинного сообщения будет короткое с окошком для прокрутки длинного вставленного кода.
Просто неудобно читать тему...
Kuzmi4
2 K0l0b0ck - попробуйте здесь("В помощь начинающему") поискать, если не найдёте на днях подниму свой архив и выложу в этой теме..
vvvvv
Цитата(Kuzmi4 @ Sep 19 2008, 12:15) *
Если кому есчё интересно - как то уважаемый bloodden выложил сдесь по моей просьбе исходники для меги работы с SD-картой для SPI-интерфейса на файловой от ChaN (FAT16) - там музло проигрывается на


http://electronix.ru/forum/index.php?act=A...st&id=22659
Kuzmi4
2 vvvvv - ОНО smile.gif
Androliz
Так что по поводу usb-host и поддержка usb flash? Кто - нибудь сталкивался? Пока использование операционной системы не предполагается.
arizona
Цитата(Androliz @ Oct 1 2008, 11:17) *
Так что по поводу usb-host и поддержка usb flash? Кто - нибудь сталкивался? Пока использование операционной системы не предполагается.


см ссылку
P@ta
Здравствуйте, товарищи!
Вижу что форум у Вас полезный очень, однако решил отписать по причине следующей:
Стоит задача подцепить к AT90USB128 сканер штрих кода, только вот он имеет USB интерфейс. Сам контроллер умеет работать хостом, иначе со сканером делать нечего. Сами понимаете руками писать обмен данными по USB можно свихнуться или как минимум потратить просто кучу времени. Я посмотрел ссылки - там указана библиотека под ПИКи, по видимому замечательная, нет ли чего такого же под АВР, я перекопал инет, но нашел только софтварные дрова, причем работающие только в режиме девайс, а мне как видите надо хоста сделать. Хелп плиз если кто что знает!
slog
Есть сканеры с RS-232 или PS/2 интерфейсом, как у клавиатуры. С ними проще будет чем с USB.
Herz
Цитата(P@ta @ Nov 13 2008, 12:23) *
Сами понимаете руками писать обмен данными по USB можно свихнуться или как минимум потратить просто кучу времени. Я посмотрел ссылки - там указана библиотека под ПИКи, по видимому замечательная, нет ли чего такого же под АВР, я перекопал инет, но нашел только софтварные дрова, причем работающие только в режиме девайс, а мне как видите надо хоста сделать. Хелп плиз если кто что знает!

Ну, а что, ПИКи - тоже хорошие контроллеры. smile.gif Может, быстрее будет их освоить? И библиотека на чём писанная? Неужели на асм-е? Если на С, так и проблемы-то...
arizona
Цитата(Herz @ Nov 13 2008, 13:44) *
Ну, а что, ПИКи - тоже хорошие контроллеры. smile.gif Может, быстрее будет их освоить? И библиотека на чём писанная? Неужели на асм-е? Если на С, так и проблемы-то...


Есть на Си, есть на asm-е
читать тут
http://www.microchip.com.ru/1010/Support/USB%20apps.html

и тут
www.microchip.com/USB
P@ta
Спасибки конечно, но надо под АВРы. А вообще говоря я прикрутил PS/2 интерфейсные сканеры к USART - подошел как тут и был, поэтому USB отменяется по крайней мере пока что!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.