Mình đang làm đề tài giao tiếp giữa sd card và PIC, sử dụng thử viện MMC của mikroC.
Mạch này sẽ đọc thông tin trên sd card và hiển thị lên Virtual terminal trong proteus.
Nhưng khi gọi hàm khởi động sd card Mmc_Init() thì trả về kết quả là 1( tức là chưa khởi tạo đươc).
có ai giúp mình đc ko.
Mình dùng pic18f452, tần số 24MHz.
đây là code:
sbit Mmc_Chip_Select at LATC2_bit;
sbit Mmc_Chip_Select_Direction at TRISC2_bit;
char *text="SD CARD CID REGISTER";
void newline()
{
while (UART1_Tx_Idle()!=1){};
UART1_Write(0x0D);
while (UART1_Tx_Idle()!=1){};
UART1_Write(0x0A);
}
void main()
{
char message[16];
unsigned int error;
UART1_Init(9600);
delay_ms(100);
while (UART1_Tx_Idle()!=1){};
UART1_Write_Text(text);
newline();
SPI1_Init();
SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV64, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);
error= Mmc_Init();
if (error) UART1_Write_Text("failed");
else UART1_Write_Text("success");
SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV4, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);
Mmc_Read_Cid(message);
UART1_Write_Text(message);
}
Mạch này sẽ đọc thông tin trên sd card và hiển thị lên Virtual terminal trong proteus.
Nhưng khi gọi hàm khởi động sd card Mmc_Init() thì trả về kết quả là 1( tức là chưa khởi tạo đươc).
có ai giúp mình đc ko.
Mình dùng pic18f452, tần số 24MHz.
đây là code:
sbit Mmc_Chip_Select at LATC2_bit;
sbit Mmc_Chip_Select_Direction at TRISC2_bit;
char *text="SD CARD CID REGISTER";
void newline()
{
while (UART1_Tx_Idle()!=1){};
UART1_Write(0x0D);
while (UART1_Tx_Idle()!=1){};
UART1_Write(0x0A);
}
void main()
{
char message[16];
unsigned int error;
UART1_Init(9600);
delay_ms(100);
while (UART1_Tx_Idle()!=1){};
UART1_Write_Text(text);
newline();
SPI1_Init();
SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV64, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);
error= Mmc_Init();
if (error) UART1_Write_Text("failed");
else UART1_Write_Text("success");
SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV4, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);
Mmc_Read_Cid(message);
UART1_Write_Text(message);
}
Comment