- UID
- 373967
- 帖子
- 8869
- 主題
- 2609
- 精華
- 0
- 積分
- 1000
- 楓幣
- 56
- 威望
- 977
- 存款
- 34822
- 贊助金額
- 0
- 推廣
- 0
- GP
- 1205
- 閱讀權限
- 70
- 在線時間
- 455 小時
- 註冊時間
- 2023-1-12
- 最後登入
- 2024-11-23
|
LPC11U14FBD64/201是一款ARM Cortex-M0微控制器,可以用於開發各種嵌入式系統和設備。
如果要製作SIM卡對拷機
需要以下材料和步驟:
材料:
LPC11U14FBD64/201微控制器模塊
電腦或單片機編程器
SIM卡插座
MAX232串口轉換芯片或USB轉UART模塊
杜邦線等連接線
電源模塊或電池組
相應的電容、電阻等元件
步驟:
連接LPC11U14FBD64/201模塊和SIM卡插座,可以使用杜邦線或插頭連接兩者。
連接串口轉換芯片或USB轉UART模塊,將LPC11U14FBD64/201模塊與電腦連接。
按照LPC11U14FBD64/201的開發手冊和數據手冊進行引腳配置和硬件接口設置。
根據需要編寫相應的程序,可以使用C語言或其他嵌入式系統開發語言。
編譯和下載程序到LPC11U14FBD64/201模塊中,可以使用單片機編程器或通過USB下載。
將SIM卡插入SIM卡插座中,通過程序和串口轉換芯片或USB轉UART模塊進行對拷操作。
以下是LPC11U14FBD64/201的引腳連接:
引腳名稱 功能描述
P0.0 外部中斷0
P0.1 UART_RTS
P0.2 UART_TXD
P0.3 UART_RXD
P0.4 UART_CTS
P0.5 LED指示燈
P0.6 SIM卡插座CLK
P0.7 SIM卡插座RST
P0.8 SIM卡插座DAT0
P0.9 SIM卡插座DAT1
P0.10 SIM卡插座DAT2
P0.11 SIM卡插座DAT3
P0.12 外部中斷1
以下是LPC11U14FBD64/201的程序,可以用於與SIM卡進行對拷操作:
#include "LPC11Uxx.h"
#define LED_PIN (1<<5)
#define SIM_RST_PIN (1<<7)
#define SIM_DAT0_PIN (1<<8)
void delay(uint32_t cnt)
{
while (cnt--);
}
void SIM_Reset(void)
{
LPC_GPIO->SET[SIM_RST_PIN>>5] = SIM_RST_PIN;
delay(1000);
LPC_GPIO->CLR[SIM_RST_PIN>>5] = SIM_RST_PIN;
delay(1000);
}
void SIM_SendCommand(uint8_t *buf, uint32_t len)
{
uint32_t i;
LPC_GPIO->CLR[SIM_DAT0_PIN>>5] = SIM_DAT0_PIN;
delay(1000);
for (i=0; i<len; i++) {
LPC_USART->TXDATA = buf[i];
while (!(LPC_USART->STAT & (1<<6)));
}
LPC_GPIO->SET[SIM_DAT0_PIN>>5] = SIM_DAT0_PIN;
}
int main(void)
{
SystemCoreClockUpdate();
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<6); // enable GPIO clock
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16); // enable USART clock
LPC_SYSCON->UARTCLKDIV = 1;
// configure LED pin as output
LPC_GPIO->DIR[SIM_RST_PIN>>5] |= SIM_RST_PIN;
LPC_GPIO->DIR[SIM_DAT0_PIN>>5] |= SIM_DAT0_PIN;
// configure USART
LPC_IOCON->PIO0_2 = 0x81; // UART_TXD
LPC_IOCON->PIO0_3 = 0x81; // UART_RXD
LPC_USART->BAUD = 9600;
LPC_USART->CTRL = (1<<0)|(1<<1)|(1<<2);
while (1) {
SIM_Reset();
uint8_t cmd1[] = {0xA0, 0xA4, 0x00, 0x00, 0x02, 0x3F, 0x00};
SIM_SendCommand(cmd1, sizeof(cmd1));
uint8_t resp[256];
uint32_t i, len;
for (i=0; i<256; i++) {
while (!(LPC_USART->STAT & (1<<0)));
resp[i] = LPC_USART->RXDATA;
if (i > 1 && resp[i-1] == 0x90 && resp[i] == 0x00) {
len = i+1;
break;
}
}
uint8_t cmd2[] = {0xA0, 0xB0, 0x00, 0x00, 0x0F};
SIM_SendCommand(cmd2, sizeof(cmd2));
for (i=0; i<len; i++) {
while (!(LPC_USART->STAT & (1<<6)));
LPC_USART->TXDATA = resp[i];
}
delay(1000000);
}
}
該程序通過USART與SIM卡通信,實現了讀取SIM卡的ICCID並輸出到USART串口。
在主函數中,循環讀取SIM卡的ICCID,並通過USART輸出到終端上。 |
|