打印
[Kinetis]

KL25小板读写93C46的问题

[复制链接]
1007|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 JY-DX-JY 于 2015-8-16 20:05 编辑

我用KL25小板读写93C46,成功了但是有个问题:
就是读程序,如下:
//读
uint_8 READ(uint_8 addr)
{
uint_8 temp1;
gpio_set(PORTA,14,1);
for(i=0;i<10;i++);
SPI_send1(SPI_0,0x06);              //写命令
SPI_send1(SPI_0,addr<<1);       //写地址,因为93C46读时序有一个虚拟0位,所以发数据多发了一位
SPI_send1(SPI_0,0xff);              //虚写
temp1=SPI_receive1(SPI_0);     //读数据
temp1=SPI_receive1(SPI_0);    //读数据
for(i=0;i<100;i++);
gpio_set(PORTA,14,0);

return temp1;
}

我不明白为什么要读两次才成功,读一次就不对。
下面是SPI读程序
uint_8 SPI_receive1(uint_8 SPI_No)
{
    SPI_MemMapPtr baseadd=SPI_baseadd(SPI_No);
    while(!(SPI_S_REG(baseadd)& SPI_S_SPRF_MASK)); //检测SPI1是否收到了数据。
        return SPI_D_REG(baseadd);   
}
请高手解惑,谢谢!

相关帖子

沙发
Messi1999| | 2015-8-16 20:43 | 只看该作者
SPI的发送命令和读写命令是严格按照芯片手册的来的吗

使用特权

评论回复
板凳
小猫爱吃鱼| | 2015-8-16 21:04 | 只看该作者
是不是开始要空读一下呢?

使用特权

评论回复
地板
JY-DX-JY|  楼主 | 2015-8-17 08:29 | 只看该作者
Messi1999 发表于 2015-8-16 20:43
SPI的发送命令和读写命令是严格按照芯片手册的来的吗

是的

使用特权

评论回复
5
JY-DX-JY|  楼主 | 2015-8-17 08:30 | 只看该作者
小猫爱吃鱼 发表于 2015-8-16 21:04
是不是开始要空读一下呢?

不知道,以前空写一个字节倒是遇到过,没遇到过空读。

使用特权

评论回复
6
FSL_TICS_Jeremy| | 2015-8-17 09:02 | 只看该作者
你是用逻辑分析仪或者示波器看看波形,是否与数据手册上的一致吧

使用特权

评论回复
7
clnbcl| | 2015-8-17 09:11 | 只看该作者
现在还要用93C46啊?
用内置eeprom的mcu吧。

使用特权

评论回复
8
JY-DX-JY|  楼主 | 2015-8-17 09:21 | 只看该作者
FSL_TICS_Jeremy 发表于 2015-8-17 09:02
你是用逻辑分析仪或者示波器看看波形,是否与数据手册上的一致吧

看起来一样啊

使用特权

评论回复
9
JY-DX-JY|  楼主 | 2015-8-17 09:22 | 只看该作者
clnbcl 发表于 2015-8-17 09:11
现在还要用93C46啊?
用内置eeprom的mcu吧。

我做实验的,不是产品

使用特权

评论回复
10
小狗爱吃骨头| | 2015-8-18 10:55 | 只看该作者
楼主问题解决了吗,我倒是没遇到过这样的问题

使用特权

评论回复
11
JY-DX-JY|  楼主 | 2015-8-18 11:23 | 只看该作者
没有,就那样吧。反正读写正常了,我不管那么多了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:晴天响霹雳,平地一声雷。

245

主题

3351

帖子

30

粉丝