洪嵐峰 發表於 2023-5-6 19:33:08

LPC11U14FBD64/201 SIM卡對拷機

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;
    delay(1000);
    LPC_GPIO->CLR = SIM_RST_PIN;
    delay(1000);

}

void SIM_SendCommand(uint8_t *buf, uint32_t len)
{
uint32_t i;

LPC_GPIO->CLR = SIM_DAT0_PIN;
delay(1000);
for (i=0; i<len; i++) {
    LPC_USART->TXDATA = buf;
    while (!(LPC_USART->STAT & (1<<6)));
}
LPC_GPIO->SET = 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;
LPC_GPIO->DIR |= 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;
    uint32_t i, len;

    for (i=0; i<256; i++) {
        while (!(LPC_USART->STAT & (1<<0)));
        resp = LPC_USART->RXDATA;
        if (i > 1 && resp == 0x90 && resp == 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;
    }

    delay(1000000);
}
}



該程序通過USART與SIM卡通信,實現了讀取SIM卡的ICCID並輸出到USART串口。
在主函數中,循環讀取SIM卡的ICCID,並通過USART輸出到終端上。
頁: [1]
查看完整版本: LPC11U14FBD64/201 SIM卡對拷機