性價比超高的U盤讀寫模塊-PB375,兼容CH375讀寫操作
1. 功能
● 用于嵌入式系統/單片機讀寫U 盤、閃盤、閃存盤、USB 移動硬盤、USB 讀卡器等。
● 支持符合USB 相關規范基于Bulk-Only 傳輸協議的各種U 盤/閃存盤/外置硬盤。
● 支持文件系統FAT12 和FAT16 及FAT32
● 文件操作功能:新建、刪除、讀寫數據,打開關閉文件等。
● SPI接口,支持3.3V電平
● 兼容CH375模塊的操作命令
● 單芯片解決方案,該模塊只需要一個主控芯片外加少量的電容電阻便可,相對于51MCU+SL811/CH375的模塊,無論模塊尺寸還是成本都有著極大的優勢。
● 可以是模塊提供,也可以是芯片提供(只需要簡單的幾個外圍元件就可以了)
具體參數可以下載數據手冊或者聯系銷售人員
基本不需要占用單片機系統的存儲空間,最少只需要幾個字節的RAM 和幾百字節的代碼。
下面就是一個很通用的臺灣的單片機(可以是holtek 松翰 義隆 富晶等)用匯編操作PB375實現讀寫操作U盤的代碼:
USB_FAIL EQU 0AAH
USB_SUCC EQU 055H
TRY_TIMES EQU 0FFH
CMD_DiskReady EQU 071H
CMD_FileCreate EQU 065H
CMD_ByteWrite equ 07Ch
CMD_FileClose equ 067h
//設置SPI 端口的輸入輸出
spi_ini:
nop
call i2c_delay
b0bset spi_sdo_mod
b0bset spi_sck_mod
b0bset spi_cs_mod
b0bclr spi_sdi_mod
b0bset spi_cs ;not chose
b0bset spi_sck
b0bclr spi_sdo
b0bclr spi_sdi
ret
/************************
SPI發一個字節,同時讀一個字節
*************************/
spi_send:
nop
clr epr_num
clr spi_in
b0bclr spi_sck
spi_write_bit:
b0bts0 epr_data_b
jmp spi_write_h
b0bclr spi_sdo
jmp spi_read_com
spi_write_h:
b0bset spi_sdo
spi_read_com:
call i2c_delay
b0bclr fc
rlcm spi_in
b0bts0 spi_sdi
incms spi_in
b0bclr fc
b0bset spi_sck
call i2c_delay
b0bclr spi_sck ;sck=0,data variable
call i2c_delay
rlcm epr_data ;prepare for next
incms epr_num
nop
b0bts1 epr_num_b
jmp spi_write_bit
call i2c_delay
ret
//發送命令
spi_send_command:
b0bclr spi_cs
b0mov rbank,#1 ; 寫入命令碼
mov a,cmd
b0mov rbank,#0
b0mov epr_data,a
call spi_send
b0mov rbank,#1 ;寫入后續參數的長度
mov a,len
b0mov rbank,#0
b0mov epr_data,a
call spi_send
b0mov rbank,#1 ;寫入后續參數
mov a,len
b0mov rbank,#0
b0bts0 FZ
jmp send_len_over ;len=0
b0mov temp,a
b0mov Y,#1
b0mov Z,#sendbuf
send_len_byte:
b0mov a,@YZ
b0mov rbank,#0
b0mov epr_data,a
call spi_send
b0mov rbank,#0
incms Z
nop
decms temp
jmp send_len_byte
send_len_over:
b0bset spi_cs
call i2c_delay
;check the status
mov a,#TRY_TIMES
b0mov rbank,#1
mov trytime,a
check_status:
b0mov rbank,#0
b0bclr spi_cs
mov a,#0ffh
b0mov epr_data,a
call spi_send
b0bset spi_cs
call i2c_delay
b0mov a,spi_in
sub a,#0ffh
b0bts0 FZ
jmp wait_1ms ;模塊操作尚未完成
b0mov a,spi_in
sub a,#00h
b0bts0 FZ
jmp succ_quit_00 ;操作成功
fail_quit:
b0bset spi_cs
mov a,#USB_FAIL
b0mov rbank,#1
mov usb_reslt,a
b0mov rbank,#0
ret
wait_1ms: //延時
b0mov z,#0f7h
b0mov y,#0e3h ;穩定oscillator,40ms
delay_ms_02:
b0bset fwdrst
nop
nop
incms z
jmp delay_ms_02
nop
incms y
jmp delay_ms_02
b0mov rbank,#1
decms trytime
jmp check_status
jmp fail_quit
succ_quit_00:
b0mov rbank,#0
b0bclr spi_cs
mov a,#00h
b0mov epr_data,a
call spi_send
b0mov a,spi_in
b0bts0 FZ
jmp succ_quit
b0mov temp,a
b0mov Y,#1
b0mov Z,#recvbuf
read_len_byte:
mov a,#0
b0mov rbank,#0
由于程序太長詳細地址:http://www.chinamcu.com/?page_id=53
歡迎垂詢
電話:075529739852
地址:深圳市南山區高新中四道30號龍泰利大廈304
http://www.chinamcu.com