- UID
- 373967
- 帖子
- 8792
- 主題
- 2609
- 精華
- 0
- 積分
- 993
- 楓幣
- 2717
- 威望
- 970
- 存款
- 31556
- 贊助金額
- 0
- 推廣
- 0
- GP
- 1205
- 閱讀權限
- 50
- 在線時間
- 451 小時
- 註冊時間
- 2023-1-12
- 最後登入
- 2024-11-7
|
製作可拆換2TB以上容量隨身碟需要以下的零件:
PIC10F322 微控制器
USB 3.0 控制器
大容量存儲器(如SSD或HDD)
USB Type-C 插頭
相應的被動元件(電阻、電容等)
電源管理模塊(如LDO穩壓器)
以下是 PIC10F322 的連接腳位:
VDD - 此引腳為電源引腳,用於供應微控制器的電源
VSS - 此引腳為地引腳
GP0 - 通用輸入/輸出引腳0
GP1 - 通用輸入/輸出引腳1
GP2 - 通用輸入/輸出引腳2
GP3 - 通用輸入/輸出引腳3
GP4 - 通用輸入/輸出引腳4
以下是程式碼框架,用於控制 PIC10F322 與 USB 3.0 控制器和存儲器之間的通信:
#include <pic.h>
#include <usb.h>
#include <storage.h>
// 定義存儲器的容量(單位:字節)
#define STORAGE_CAPACITY (2UL * 1024UL * 1024UL * 1024UL * 2UL)
// 定義存儲器的扇區大小(單位:字節)
#define STORAGE_SECTOR_SIZE 512
// 定義存儲器的起始扇區位置
#define STORAGE_START_SECTOR 0
// 定義存儲器的結束扇區位置
#define STORAGE_END_SECTOR (STORAGE_CAPACITY / STORAGE_SECTOR_SIZE)
void main() {
// 初始化 PIC10F322 微控制器
TRISGPIO = 0; // 設置 GPIO 引腳為輸出模式
ANSELGPIO = 0; // 設置 GPIO 引腳為數字模式
CM1CON0 = 0; // 關閉比較器
CM2CON0 = 0; // 關閉比較器
OSCCON = 0x60; // 設置系統時鐘為 4 MHz
OPTION_REG &= 0x7F; // 啟用上拉電阻
// 初始化 USB 3.0 控制器
usb_init();
// 初始化存儲器
storage_init(STORAGE_CAPACITY, STORAGE_SECTOR_SIZE, STORAGE_START_SECTOR, STORAGE_END_SECTOR);
// 開始通信循環
while(1) {
// 從存儲器讀取數據並將其傳送到USB控制器
if (storage_read_sector() == true) {
usb_write_data(storage_sector_data, STORAGE_SECTOR_SIZE);
}
// 或者從USB控制器接收數據並將其寫入存儲器
if (usb_data_available() == true) {
usb_read_data(storage_sector_data, STORAGE_SECTOR_SIZE);
storage_write_sector();
}
}
}
|
|