回复帖子:(蜘蛛侦探)请教6800的SPI的nCS的问题。。。

用户名:   *您没有注册?
密码:   *忘记论坛密码?    标题采用“回复:XXX....”
验证码 点击获取验证码
主题标题:  *不得超过 200 个汉字
当前心情
上一页 发帖表情 下一页
内容
  

主题最新回顾(发布时间:2018-11-27 17:20:00)
--  作者:hzc
--  

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


主题最新回顾(发布时间:2018-11-27 15:58:00)
--  作者:蜘蛛侦探
--  

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


主题最新回顾(发布时间: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编辑过]