Cypress SPI做Slave,基于自定的通信协议

2019-08-17 04:57发布

本帖最后由 linjianbinde 于 2017-6-28 21:00 编辑

      在Cypress官网找到一个关于spi slave的例程,但是只有单纯的收发,并没有加上协议之类的。刚好有个项目需要用到Psoc4 spi slave,在网上找了一大堆都没有找到满意的资料,只好自己慢慢摸索。
      首先,我用两块一样的板子,一个做spi slave,一个做spi master。起初我以为spi的接线肯定是spi_master_miso接spi_slave_mosi,spi_master_mosi接spi_slave_miso,但是仿真发现每次接收到的数据都是0xff。后来,无意间又去看了下Cypress官网的spi slave例程,竟然发现2.  The DVK CY8CKIT-001 board besides default configuration should have LCD power jumper (J12) set ON.

3.  Connect the appropriate pins together:
       miso_m (P4[1])  to miso_s (P3[1])
        mosi_m (P4[0])  to mosi_s (P3[0])
        sclk_m (P4[2])  to sclk_s  (P0[6])
        ss_m    (P4[3])  to ss_s     (P0[7])

4.  Build the project and program the hex file on to target device by using MiniProg3.

5.  Power cycle the device and observe the results on the LCD.

    坑爹啊,居然是mosi接mosi,miso接miso。
    接线正确后,接收到的数据就不会一直是0xff了。但是又发现,spi slave接收到的字节跟spi master发送的字节不一样,0xAA变成了0x55,0x01变成了0x80,这个问题容易解决,应该是模块里的bit order选项不是一致导致。另外,oversampling选项也需要选择8,如果16的话,发现接收到的数据每次都间隔一个0x00。
    另外,由于需要符合协议,因此,需要多加一个接收中断,每次接收到数据进行判断处理。
    具体的代码请查考附件。



0条回答

一周热门 更多>