打印

模拟SPI通信

[复制链接]
1989|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hxb20122012|  楼主 | 2013-6-7 10:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
KEIL中:当程序全速运行时,进入SpiWriteRegister(),函数,但是就出不来了,然后Stop停止一下,再全速就出来了,换句话说就是单步调试没问题,全速就在SpiWriteRegister()这个函数里出不来,请指教!!!!!
沙发
sonicll| | 2013-6-7 10:47 | 只看该作者
能把你这个SpiWriteRegister()的内容贴出来吗,是不是有while循环的语句死掉了,适当加点延时试试

使用特权

评论回复
板凳
mmuuss586| | 2013-6-7 11:45 | 只看该作者

使用特权

评论回复
地板
mmuuss586| | 2013-6-7 11:57 | 只看该作者
用的什么芯片啊???

使用特权

评论回复
5
jsll86| | 2013-6-8 08:21 | 只看该作者
加个延时,再试试

使用特权

评论回复
6
hxb20122012|  楼主 | 2013-6-8 09:06 | 只看该作者
void SpiReadWrite1(uint8_t reg, uint8_t value)
{
   uint8_t i;
   uint8_t Temp_byte;
   
   nSEL_L;                              
   Temp_byte = (reg|0x80);                                //write data into the SPI register

                for(i=0;i<8;i++)
                {
                        if(Temp_byte&0x80)
                        {
                                        SPI_MOSI_H;
                        }
                        else
                        {
                                        SPI_MOSI_L;
                        }
                                       
                        SPI_CLK_H;
                        Delay_uS(1);
                        SPI_CLK_L;
                        Temp_byte <<= 1;
                }
       
                        Temp_byte = value;       
            for(i=0;i<8;i++)
                        {
                                if(Temp_byte&0x80)
                                {
                                                SPI_MOSI_H;
                                }
                                else
                                {
                                                SPI_MOSI_L;
                                }

                                SPI_CLK_H;       
                                Delay_uS(1);
                                SPI_CLK_L;
                                Delay_uS(1);
                                Temp_byte <<=1;
                        }
                        nSEL_H;  
                        SPI_CLK_L;               
                        Delay_uS(1);                               

}

使用特权

评论回复
7
hxb20122012|  楼主 | 2013-6-8 09:07 | 只看该作者
用的是STM32F103ZET6

使用特权

评论回复
8
hxb20122012|  楼主 | 2013-6-8 10:53 | 只看该作者
已经解决了,不是这个函数的问题,是我在操作芯片的时候,必须要等待一定的时间之后才可以去操作芯片,所以就卡死在这个函数里,单步可以,这也就讲的通了,谢谢各位!!!

使用特权

评论回复
9
grasswolfs| | 2013-6-8 15:01 | 只看该作者
hxb20122012 发表于 2013-6-8 10:53
已经解决了,不是这个函数的问题,是我在操作芯片的时候,必须要等待一定的时间之后才可以去操作芯片,所以 ...

初始化的问题?

使用特权

评论回复
10
hxb20122012|  楼主 | 2013-6-8 16:54 | 只看该作者
就是在初始化的过程中,需要等待一定的时间才可以对芯片进行操作。

使用特权

评论回复
11
zeluo| | 2013-6-8 20:52 | 只看该作者
通过延时不知道能不能解决这个问题  不是很了解

使用特权

评论回复
12
zjping0815| | 2013-6-24 11:38 | 只看该作者
jsll86 发表于 2013-6-8 08:21
加个延时,再试试

两个stc单片机IO口模拟SPI通讯,
大哥能不能发个实例不

使用特权

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

本版积分规则

74

主题

564

帖子

1

粉丝