ch347关于spi cs设置的疑问及应用开发手册1.4发现的几处错误

CH347SPI_Init()函数里可以对CS的属性进行设置。手册里又提供了CH347SPI_SetChipSelect()其参数几乎与CH347SPI_Init()函数里对CS的设置一模一样。然后又提供了CH347SPI_ChangeCS()函数可以用于修改CS。最后在读写函数里又有iChipSelect 进行片选控制。

应用开发手册里没说4个地方对CS控制有什么不同,想请教下这4个使用上有什么区别


另为了搞懂这个我尝试读了ch347demo程序的VC代码发现几处错误

1)在SpilicDebug.cpp文件CH347InitSpi()函数中根据GUI界面的选项进行初始化。其中有一行

SpiCfg.iIsAutoDeativeCS = (IsDlgButtonChecked(SpiI2cGpioDebugHwnd,IDC_AutoDeativeCS)==BST_CHECKED);

这里IDC_AutoDeativeCS 这个勾选在GUI界面上并没有(或者放了被隐藏了,反正我是没找到)也就是这里SpiCfg.iIsAutoDeativeCS一定是=0用户控制不了


2)手册对CH347SPI_SetChipSelect()函数中的iIsAutoDeativeCS参数描述

ULONG iIsAutoDeativeCS 低16 位为CS1,高16 位为CS2; 操作完成后是否自动撤消片选

demo程序SpilicDebug.cpp文件CH347SpiCsCtrl()函数里调用CH347SPI_SetChipSelect()的时候给的参数

USHORT          iIsAutoDeativeCS;   // 低八位为CS1,高八位为CS2;操作完成后是否自动撤消片选

这里手册为32bit long,程序为16bit short对不上


3)同样在SpilicDebug.cpp文件CH347SpiCsCtrl()函数里下面几句

ULONG           iActiveDelay; // 低八位为CS1,高八位为CS2;设置片选后执行读写操作的延时时间

ULONG           iDelayDeactive; // 低八位为CS1,高八位为CS2;撤消片选后执行读写操作的延时时间

这里注释不对,应该是高16bit和底16bit分别为CS1和CS2的延迟


4)CH347SPI_SetChipSelect()函数手册里对iEnableSelect参数的描述:

“iEnableSelect: 低八位为CS1,高八位为CS2;字节值为0= 设置CS, 为1= 忽略此CS 设置”

但在程序SpilicDebug.cpp文件CH347SpiCsCtrl()函数里看到

CS=2的时候 iEnableSelect = 0x0100; CS=1的时候iEnableSelect = 0x01;这里似乎是为1的时候设置。与手册里描述的是反的。


最后想问下沁恒的专家我如果想将CS拉低->开始SPI操作->CS拉高 要如何弄


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