求助,CH368 SPI问题

SPI困扰我很久了,之前实现了368芯片8位数据的正常发送,但是目前需要16位数据。通过调用一次函数发送两个字节和调用两次函数发送两次字节,都有点问题。接收数据采用单片机SPI接收,已经通过自发自收测试。问题如下图:

难道buffer是全局变量吗 应该每次都会初始化一次吧

icon_jpg.gif20220512180635 - 副本.png


好像图片不能放大

tws.PNG


之前还试过unsigned int型,直接buffer存u16 也是不行


您好,如上代码没有问题的,使用SPI通讯接口CH367StreamSPI实现单字节多次写入,或一次写入多字节均可以。需要注意的是芯片支持3线和4线SPI,若使用4线SPI需要通过SetStream函数做下设定。此外,也可以尝试使用15.6MHz时钟测试,避免单片机来不及通讯。

若仍不能解决问题,可使用硬件仪器如示波器或逻辑分析仪监控下SPI通道数据。


好的 目前是使用的3线模式 15.6Mhz,用逻辑分析仪看看还是方便;看表面原因像是上次发送的数据没读完,导致错位。可能是我用中断接收的原因吧,,不过你们要是有单片机通信的例子就更好了,哈哈


您好,可以用逻辑分析仪抓取下数据,如果是中断接收,先尽量避免中断函数中处理过多的任务导致MCU来不及接收。


icon_jpg.gif3s.PNG 

icon_jpg.gif批注 2022-05-18 135247.jpg

icon_jpg.gif批注 2022-05-18 135343.jpg

调用 buffer[0] = 0x3b;  CH367StreamSPI(mIndex, 0x01, buffer, NULL, NULL) ;发现

每次会发送两个字节的clk信号,很奇怪呀。调用两次这个函数就会4个clk。读取数据容易重复。如果 CH367StreamSPI(mIndex, 0x02, buffer, NULL, NULL) ;每次发送连个字节,就会时候到3个字节的clk  还是容易错位。3线模式和4线模式都测试了。


您好,请查看下您当前使用的驱动和EVT资料是否为最新版本,若仍有问题可直接电联我们沟通。

驱动链接:http://www.wch.cn/downloads/CH367DRV_EXE.html 

EVT链接:http://www.wch.cn/downloads/CH367EVT_ZIP.html 


您好,四线制八位收发您是怎么实现的?


您好,四线制八位收发您是怎么实现的?


您好,

1、CH368的SPI支持使用3线和4线,使用3线时数据脚使用SDX,使用4线时MOSI为SDX,MISO为ADDR脚;

2、启用4线制收发,需要应用层软件调用设置4线的接口函数,即iMode参数的BIT1代表4线制,请知悉。


BOOL    WINAPI  CH367SetStream(  // 设置串口流模式

    ULONG           iIndex,      // 指定CH367设备序号

    ULONG           iMode )     // 指定模式,见下行

// 位0:     SPI时钟频率,0=31.3MHZ,1=15.6MHZ

// 位1:     SPI的I/O数/IO引脚, 0=SPI3(SCS/SCL/SDX),1=SPI4(SCS/SCL/SDX/SDI)

// 其它保留,必须为0



只有登录才能回复,可以选择微信账号登录