Перейти к содержанию
    

Нужно сделать устройство к которому можно подключать USB flash память. Микроконтроллер LPC2388 с usb host внутри. Но ходят слухи что реализация поддержки USB flash довольно сложная штука. Может кто-нибудь реализовывал подобное. Может у кого есть библиотеки котоырми он может поделиться или ссылки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А SD-карточку проще? Как с ней вообще работать-то?

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

 

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

 

.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

Изменено пользователем zltigo

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Началось все с ARM'а, прошло через PIC'и и закончилось AVR'ом :biggrin:

 

По теме: если нет времени напрягать мозги, можно напрячь кошелек, готовые решения уже есть. Кстати, а что за операционку собираетесь использовать ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

2 torik - а вам мому порекомендовать сд-корку от эль-камино - ;) - гдо валялась у меня вылеченная, пока тоже руки не дошли её потестить. Всё же лучше чем проц нагружать :biggrin: .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кому интересно могу выложить

Выложи, если не затруднит, есть желание разобраться..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Пожалуйста, такие длинные вставки или присоединяйте к сообщению как файл, или оформляйте тегами CODEBOX, а не CODE, тогда вместо длииииинного сообщения будет короткое с окошком для прокрутки длинного вставленного кода.

Просто неудобно читать тему...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 K0l0b0ck - попробуйте здесь("В помощь начинающему") поискать, если не найдёте на днях подниму свой архив и выложу в этой теме..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если кому есчё интересно - как то уважаемый bloodden выложил сдесь по моей просьбе исходники для меги работы с SD-картой для SPI-интерфейса на файловой от ChaN (FAT16) - там музло проигрывается на

 

http://electronix.ru/forum/index.php?act=A...st&id=22659

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так что по поводу usb-host и поддержка usb flash? Кто - нибудь сталкивался? Пока использование операционной системы не предполагается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так что по поводу usb-host и поддержка usb flash? Кто - нибудь сталкивался? Пока использование операционной системы не предполагается.

 

см ссылку

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте, товарищи!

Вижу что форум у Вас полезный очень, однако решил отписать по причине следующей:

Стоит задача подцепить к AT90USB128 сканер штрих кода, только вот он имеет USB интерфейс. Сам контроллер умеет работать хостом, иначе со сканером делать нечего. Сами понимаете руками писать обмен данными по USB можно свихнуться или как минимум потратить просто кучу времени. Я посмотрел ссылки - там указана библиотека под ПИКи, по видимому замечательная, нет ли чего такого же под АВР, я перекопал инет, но нашел только софтварные дрова, причем работающие только в режиме девайс, а мне как видите надо хоста сделать. Хелп плиз если кто что знает!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...