LM3S的SPI,用SPI读写设置,读不到数据啊!

2019-03-24 16:27发布

LM3S的SPI,用SPI读写TC72一直都不到数据,读时,在主模式下SCK有波形吗?设置如下。
    // Enables a peripheral SSI0
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
    // Configures pin(s) for use by the SSI peripheral
    // PA2 SSI0CLK(SSCK)  PA4 SSI0RX(MISO) PA5 SSI0TX(MOSI)
    GPIOPinTypeSSI(GPIO_PORTA_BASE,(GPIO_PIN_2 | GPIO_PIN_4 | GPIO_PIN_5));
    // PA2 SSI0CLK(SSCK)
    //GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2);
    // PA4 SSI0RX(MISO)
    //GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_4); 
    // PA5 SSI0TX(MOSI)
    //GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_5);

    // Disables the synchronous serial interface 
    SSIDisable(SSI0_BASE);

   // Configure the SSI, 1MHZ 
    SSIConfigSetExpClk(SSI0_BASE,   // Base 
                                    //SysCtlClockGet(),  // SSIClk
                                   20000000,            // 5MHZ
                                  SSI_FRF_MOTO_MODE_2, // Protocol
                                  SSI_MODE_MASTER,     // Mode
                                 1000000,             // BitRate 
                                  8 // DataWidth
         ); 
   // Enables the synchronous serial interface  
   SSIEnable(SSI0_BASE);
有用模块读写SPI EEPROM的吗?  此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
yuchenglin
1楼-- · 2019-03-26 15:09
 精彩回答 2  元偷偷看……
mawenwei
2楼-- · 2019-03-26 18:00

原帖由 yuchenglin 于 2010-8-23 22:14 发表 没有什么不对啊!奇怪

 

嘿嘿,仔细检查,要有耐心,或者换个M3的板子来读读看

zfnuaa
3楼-- · 2019-03-26 18:58
这几个问题你看看:
第一:你的CS端是用的SSI的FSS吗?如果不是,这个会有可能影响你的数据发送。
怎么解释呢?咱们先看看函数给的发送函数是怎么编写的吧:
void
SSIDataPut(unsigned long ulBase, unsigned long ulData)
{
    ASSERT((ulBase == SSI0_BASE) || (ulBase == SSI1_BASE));
    ASSERT((ulData & (0xfffffffe << (HWREG(ulBase + SSI_O_CR0) &
                                     SSI_CR0_DSS_M))) == 0);// 这个不管
    while(!(HWREG(ulBase + SSI_O_SR) & SSI_SR_TNF))  //(重要)先等待缓冲区中的数据为空
    {
    }
    HWREG(ulBase + SSI_O_DR) = ulData;   //  再把数据发送出去!!!
}
这样的程序有可能发生这样的状况就是:你往外发送数据,用SSIDataPut函数,如果下一条指令是CS(无效),那么你的从芯片还没有接收到数据,你就把信号接收功能给断掉了。实际ARM还在发送信号,只是从芯片接收不到!!!
第二、接收函数之前进行了多少次发送。如果超过八次,则你的接收FIFO已经满了,SSIDataGet函数只是从FIFO中接收数据。你可以做个简单的测试,让你的RX和TX接在一起。然后用SSIDataPut发送8个字符,然后发送第九个字符的时候和前面八个不一样,你用SSIDataGet读取数据,只能读到前八个数据,第九个数据就丢失了。
如果这样还不行,我就没有太好的办法了。呵呵。
写的有些乱,自己领悟吧。
祝你早日调出来。
fengzhang2002
4楼-- · 2019-03-26 19:54
 精彩回答 2  元偷偷看……
yuchenglin
5楼-- · 2019-03-26 20:40
我没有办法用IO口模拟,实现了25LC256和TC72的读写,数据都正常。我只是读写4个字节数据,CS在读后才无效的。楼上读得是什么?
yuchenglin
6楼-- · 2019-03-27 00:42
但感觉IO口模拟很浪费资源

一周热门 更多>

相关问题

    相关文章