3 * @brief FATファイルシステム用下層SPIドライバの実装。
8 #include <lpc17xx_spi.h>
9 #include <lpc17xx_gpio.h>
10 #include <lpc17xx_pinsel.h>
11 #include <lpc17xx_libcfg.h>
14 SPI_CFG_Type SPI_ConfigStruct;
15 PINSEL_CFG_Type PinCfg;
16 SPI_DATA_SETUP_Type xferConfig;
18 // PORT number that /CS pin assigned on
20 // PIN number that /CS pin assigned on
23 void ffspi_cs_init(void)
25 GPIO_SetDir(CS_PORT_NUM, (1 << CS_PIN_NUM), 1);
26 GPIO_SetValue(CS_PORT_NUM, (1 << CS_PIN_NUM));
29 void ffspi_cs_ena(void)
31 GPIO_ClearValue(CS_PORT_NUM, (1 << CS_PIN_NUM));
34 void ffspi_cs_dis(void)
36 GPIO_SetValue(CS_PORT_NUM, (1 << CS_PIN_NUM));
39 /* CS status (true:CS == L) */
40 unsigned char ffspi_cs_stat(void)
42 unsigned char val = GPIO_ReadValue(CS_PORT_NUM);
43 return ((val & (1 << CS_PIN_NUM)) == 0) ? 1 : 0;
49 * Initialize SPI pin connect
59 PINSEL_ConfigPin(&PinCfg);
61 PINSEL_ConfigPin(&PinCfg);
63 PINSEL_ConfigPin(&PinCfg);
65 // initialize SPI configuration structure to default
67 SPI_ConfigStructInit(&SPI_ConfigStruct);
69 SPI_ConfigStruct.CPHA = SPI_CPHA_FIRST;
70 SPI_ConfigStruct.CPOL = SPI_CPOL_HI;
71 SPI_ConfigStruct.ClockRate = 5000000;
72 SPI_ConfigStruct.DataOrder = SPI_DATA_MSB_FIRST;
73 SPI_ConfigStruct.Databit = SPI_DATABIT_8;
74 SPI_ConfigStruct.Mode = SPI_MASTER_MODE;
76 // Initialize SPI peripheral with parameter given in structure above
77 SPI_Init(LPC_SPI, &SPI_ConfigStruct);
82 void ffspi_tx(unsigned char c)
84 SPI_SendData(LPC_SPI, c);
85 while (!(SPI_GetStatus(LPC_SPI) & SPI_SPSR_SPIF))
88 SPI_ReceiveData(LPC_SPI);
91 unsigned char ffspi_rx(void)
93 SPI_SendData(LPC_SPI, 0xff);
94 while (!(SPI_GetStatus(LPC_SPI) & SPI_SPSR_SPIF))
97 return SPI_ReceiveData(LPC_SPI);
100 void ffspi_dly_ms(int ms)