在线时间4 小时
UID2034839
注册时间2013-8-19
NXP金币0
该用户从未签到
注册会员

- 积分
- 161
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2014-5-22 12:18:33
|
显示全部楼层
回复:KL16求SPI示例代码!!!
回复第 3 楼 于2014-05-22 09:37:54发表:
能不能把目前的问题详细描述一下。另外发一下你的配置代码。
我的初始化代码完全没变。只是之前对应的KL15的寄存器定义是:
#if KL15
typedef struct {
__IO uint8_t C1; /**< SPI control register 1, offset: 0x0 */
__IO uint8_t C2; /**< SPI control register 2, offset: 0x1 */
__IO uint8_t BR; /**< SPI baud rate register, offset: 0x2 */
__I uint8_t S; /**< SPI status register, offset: 0x3 */
uint8_t RESERVED_0[1];
__IO uint8_t D; /**< SPI data register, offset: 0x5 */
uint8_t RESERVED_1[1];
__IO uint8_t M; /**< SPI match register, offset: 0x7 */
} SPI_Type;
#endif
我修改成了
#if KL16
typedef struct {
__IO uint8_t S;
__IO uint8_t BR; /**< SPI baud rate register, offset: 0x2 */
__IO uint8_t C2; /**< SPI control register 1, offset: 0x0 */
__IO uint8_t C1; /**< SPI control register 2, offset: 0x1 */
__I uint8_t ML; /**< SPI status register, offset: 0x3 */
__I uint8_t MH; /**< SPI status register, offset: 0x3 */
__IO uint8_t DL; /**< SPI data register, offset: 0x5 */
__IO uint8_t DH; /**< SPI data register, offset: 0x5 */
__IO uint8_t RESERVED_0[2]; /**< SPI data register, offset: 0x5 */
__IO uint8_t CI;
__IO uint8_t C3; /**< SPI match register, offset: 0x7 */
} SPI_Type;
#endif
同样是设置了对应的寄存器,16中多出的一些寄存器我没有设置。我初始化的是一款SPIFLASH. SPI_ReadWriteByte函数我修改如下:
uint16_t SPI_ReadWriteByte(SPI_Type *SPIx, uint16_t Data)
{
uint8_t temp;
while(!(SPIx->S & SPI_S_SPTEF_MASK)); /* write finish? */
#if KL16
SPIx->DL = Data;
#endif
#if KL15
SPIx->D = Data;
#endif
while(!(SPIx->S & SPI_S_SPRF_MASK)); /* read finish? */
#if KL16
temp = SPIx->DL;
#endif
#if KL15
temp = SPIx->D;
#endif
return temp;
}
现在出现的问题是SPIFLASH初始化失败。ID读出来不正确。 |
|