CH347SPI_Init()函數(shù)里可以對CS的屬性進(jìn)行設(shè)置。手冊里又提供了CH347SPI_SetChipSelect()其參數(shù)幾乎與CH347SPI_Init()函數(shù)里對CS的設(shè)置一模一樣。然后又提供了CH347SPI_ChangeCS()函數(shù)可以用于修改CS。最后在讀寫函數(shù)里又有iChipSelect 進(jìn)行片選控制。
應(yīng)用開發(fā)手冊里沒說4個地方對CS控制有什么不同,想請教下這4個使用上有什么區(qū)別
另為了搞懂這個我嘗試讀了ch347demo程序的VC代碼發(fā)現(xiàn)幾處錯誤
1)在SpilicDebug.cpp文件CH347InitSpi()函數(shù)中根據(jù)GUI界面的選項進(jìn)行初始化。其中有一行
SpiCfg.iIsAutoDeativeCS = (IsDlgButtonChecked(SpiI2cGpioDebugHwnd,IDC_AutoDeativeCS)==BST_CHECKED);
這里IDC_AutoDeativeCS 這個勾選在GUI界面上并沒有(或者放了被隱藏了,反正我是沒找到)也就是這里SpiCfg.iIsAutoDeativeCS一定是=0用戶控制不了
2)手冊對CH347SPI_SetChipSelect()函數(shù)中的iIsAutoDeativeCS參數(shù)描述
ULONG iIsAutoDeativeCS 低16 位為CS1,高16 位為CS2; 操作完成后是否自動撤消片選
demo程序SpilicDebug.cpp文件CH347SpiCsCtrl()函數(shù)里調(diào)用CH347SPI_SetChipSelect()的時候給的參數(shù)
USHORT? ? ? ? ? iIsAutoDeativeCS;? ?// 低八位為CS1,高八位為CS2;操作完成后是否自動撤消片選
這里手冊為32bit long,程序為16bit short對不上
3)同樣在SpilicDebug.cpp文件CH347SpiCsCtrl()函數(shù)里下面幾句
ULONG? ? ? ? ? ?iActiveDelay; // 低八位為CS1,高八位為CS2;設(shè)置片選后執(zhí)行讀寫操作的延時時間
ULONG? ? ? ? ? ?iDelayDeactive; // 低八位為CS1,高八位為CS2;撤消片選后執(zhí)行讀寫操作的延時時間
這里注釋不對,應(yīng)該是高16bit和底16bit分別為CS1和CS2的延遲
4)CH347SPI_SetChipSelect()函數(shù)手冊里對iEnableSelect參數(shù)的描述:
“iEnableSelect: 低八位為CS1,高八位為CS2;字節(jié)值為0= 設(shè)置CS, 為1= 忽略此CS 設(shè)置”
但在程序SpilicDebug.cpp文件CH347SpiCsCtrl()函數(shù)里看到
CS=2的時候 iEnableSelect = 0x0100; CS=1的時候iEnableSelect = 0x01;這里似乎是為1的時候設(shè)置。與手冊里描述的是反的。