CH347 提供了4个读写函数CH347SPI_Write(),CH347SPI_Read(),CH347SPI_WriteRead,CH347StreamSPI4但开发手册里对函数的描写太简单了,我的疑问
1)spi_read函数 iLength为PULONG型的变量,看起来像是个指针。参数说明里的描述是“准备读取的数据字长度”那么iLength里面存放的到底是告诉read函数需要读取字节的数量还是read函数读结束后将读到的实际字节数量写入到iLength,如果是后一种情况很容易内存溢出如何防止?
2)WriteRead()函数ioBuffer参数说明“ 指向一个缓冲区,放置准备从MOSI 写出的数据,返回后是从MISO 读入的数据”这个函数是先写后读,CH347SPI_Read函数也是先写后读且写的长度都可以指定那么这两个函数的区别是什么?是read函数读取长度可以自己指定,WriteRead函数读取长度不能指定么?
3)CH347StreamSPI4 也是ioBuffer: 指向一个缓冲区,放置准备从MOSI 写出的数据,返回后是从MISO 读入的数据 那么这个函数同WriteRead()有什么区别呢?
能否解释下这几个函数的具体区别?
附:
CH347SPI_Read(
ULONG iIndex,
ULONG iChipSelect,
ULONG oLength,
PULONG iLength,
PVOID ioBuffer);
参数说明
oLength: 准备发出的数据字节数
iLength: 准备读取的数据字长度
ioBuffer: 指向一个缓冲区,放置准备从MOSI 写出的数据,返回后是从MISO 读入的数据
CH347SPI_WriteRead( ULONG iIndex,
ULONG iChipSelect,
ULONG iLength,
PVOID ioBuffer );
参数说明
iLength: 准备传输的数据字节数
ioBuffer: 指向一个缓冲区,放置准备从MOSI 写出的数据,返回后是从MISO 读入的数据
CH347StreamSPI4(ULONG iIndex,
ULONG iChipSelect,
ULONG iLength,
PVOID ioBuffer );
iLength: 准备传输的字节数
ioBuffer: 指向一个缓冲区,放置准备从MOSI 写出的数据,返回后是从MISO 读入的数据