以文本方式查看主题

-  公司论坛  (https://emtronix.com/club/index.asp)
--  技术问答  (https://emtronix.com/club/list.asp?boardid=1)
----  请教6800的SPI的nCS的问题。。。  (https://emtronix.com/club/dispbbs.asp?boardid=1&id=4830)

--  作者:蜘蛛侦探
--  发布时间:2018-11-27 15:54:00
--  请教6800的SPI的nCS的问题。。。

代码如下:

        tr[0].tx_buf = (unsigned long)tx;
        tr[0].rx_buf = NULL;
        tr[0].len = 2;
        tr[0].delay_usecs = 0;
        tr[0].speed_hz = Speed;
        tr[0].bits_per_word = Bits;
        tr[0].cs_change=0;                //add to keep cs actived

        tr[1].tx_buf = (unsigned long)par;
        tr[1].rx_buf = NULL;
        tr[1].len = 4;
        tr[1].delay_usecs = 0;
//        tr[1].speed_hz = 0;
//        tr[1].bits_per_word = 0;
        tr[1].speed_hz = Speed;
        tr[1].bits_per_word = Bits;
        tr[1].cs_change=0;                //add to keep cs actived

        tr[2].tx_buf = (unsigned long)tx2;
        tr[2].rx_buf = NULL;
        tr[2].len = 2;
        tr[2].delay_usecs = 0;
        tr[2].speed_hz = Speed;
        tr[2].bits_per_word = Bits;
        tr[2].cs_change=0;                //add to keep cs actived

        ret = ioctl(m_fd, SPI_IOC_MESSAGE(3), tr );


我们在ESM335X上面跑的时候,硬件的CS一直保持低电平,无论有没有cs_change=0的语句,但在6800上cs在中间一直会回到高电平,如下图


图片点击可在新窗口打开查看

[此贴子已经被作者于2018-11-27 15:54:58编辑过]

--  作者:蜘蛛侦探
--  发布时间:2018-11-27 15:58:00
--  

cs不能保持的话,写的时候还好,但读的时候就会有很严重的问题,特别是需要burst的时候


--  作者:hzc
--  发布时间:2018-11-27 17:20:00
--  

你好,ESM6800的SPI一次片选能够传输的长度最长为256byte,可以试试把上面的代码中写的buf合并到一次的ioctl传输操作中,只要buf长度小于256byte,就能够在一次片选完成。