你好
我所使用的开发板是从淘宝上muselab买的贵司的开发板,usb转uart/i2c/spi/jtag。我所使用的是SPI功能。
我用python简单写了个调用CH347DLL.DLL里面的两个函数实现单字节的读写:
CH347.CH347StreamSPI4(dev_index,0x80,2,spi_buf)
CH347.CH347SPI_WriteRead(dev_index,0x80,2,spi_buf)
另外SPI的结构体配置如下:
classspi_config(Structure):
_fields_=[
("iMode",c_ubyte),
("iClock",c_ubyte),
("iByteOrder",c_ubyte),
("iSpiWriteReadInterval",c_ushort),
("iSpiOutDefaultData",c_ubyte),
("iChipSelect",c_ulong),
("CS1Polarity",c_ubyte),
("CS2Polarity",c_ubyte),
("iIsAutoDeativeCS",c_ushort),
("iActiveDelay",c_ushort),
("iDelayDeactive",c_ulong),
]
CH347_spi_cfg=spi_config()
CH347_spi_cfg.iMode=0x00
CH347_spi_cfg.iClock=0x01
CH347_spi_cfg.iByteOrder=0x01
CH347_spi_cfg.iSpiWriteReadInterval=0x00
CH347_spi_cfg.iSpiOutDefaultData=0xff
CH347_spi_cfg.iChipSelect=0x80
CH347_spi_cfg.CS1Polarity=0x00
CH347_spi_cfg.CS2Polarity=0x00
CH347_spi_cfg.iIsAutoDeativeCS=0x01
CH347_spi_cfg.iActiveDelay=0x00
CH347_spi_cfg.iDelayDeactive=0x00
CH347.CH347SetTimeout(dev_index,0xffffffff,0xffffffff)
CH347.CH347SPI_Init(self.dev_index,pointer(CH347_spi_cfg))
目前情况是调用前面的两个函数读写是正常的,能够正常读写数据,
但是测试时间(按上面的参数调用1W次上面的函数,计算平均时间)时,
发现调用CH347StreamSPI4/CH347SPI_WriteRead这两个函数,
都存在大概200us的延时才返回数据,
这样的话导致SPI的各种频率(64M/32M/16M/......400khz)设置都没有意义,
都是花了差不多时间。发起SCK的的频率确实是按照32Mhz去发,
但是大部分时间都是啥都没干,被浪费掉了。
想请教下:
1.我前面的spi配置以及调用方法有问题吗?
2.如何提高效率?
PS1:使用的UART1+I2C+SPI(VCPMode)
PS2:中途没有使用函数CH347OpenDevice/CH347CloseDevice
PS3:win10系统
谢谢