关于Linux 核心SPI驱动传输速率的问题,请大神帮助解困。
SPI初始化设置CLK位10MHz,使用示波器也可以测试得到10MHz的波形。我在使用read函数去读spi从设备的数据,发现只有2MHz,与前边设置的10M差别很大。有尝试把CLK增大到20M,发现read的速率也就变成了4M左右。貌似是5倍的样子。这是怎么回事。
read函数如下:
static int htpa82_read(struct spi_htpa82 *spi_s, u16 *value)
{
int err;
struct spi_transfer xfer = {
.rx_buf = &spi_s->spi_rx,
.len = 2,
.bits_per_word = 16,
};
struct spi_message msg;
spi_message_init(&msg);
spi_message_add_tail(&xfer, &msg);
err = spi_sync(spi_s->spi, &msg);
if (err) {
dev_err(&spi_s->spi->dev,"%s: failed, value: %x, error: %d\n",__func__, value, err);
return err;
}
*value = spi_s->spi_rx;
return 0;
}
|