- 论坛徽章:
- 0
|
本帖最后由 pengwater 于 2016-11-23 11:39 编辑
我们使用的是SPI 3线的方式(MOSI,MISO共用一条数据线),装置为arm+SPI(液晶),
发现在arm在要获取液晶的数据时(通过SPI通信),出现获取不到的情况,而SPI的数据寄存器却能得到,
请问这是怎么回事?
而且我们也通过尝试,发现两个奇怪的问题:
《1》在降低SPI的频率时,arm有时却能获取到数据。
《2》修改SPI的通信代码,arm也可以获取到数据,
原始代码:
- unsigned char data1_tx = 0xff;
- unsigned char data1_rx = 0x00;
- struct spi_transfer t1 = {
- .tx_buf = &data1_tx,
- .rx_buf = &data1_rx,
- .len = 1,
- };
- struct spi_message m;
- wfet_lcd_dotmatrix_write_cmd(1);
- spi_message_init(&m);
- spi_message_add_tail(&t1, &m);
- result = spi_sync(wfet_dotmatrix_datap->spi_device, &m);
复制代码
修改后的代码:
- unsigned char data1_tx = 0xff;
- unsigned char data1_rx = 0x01;
- struct spi_transfer t1 = {
- .tx_buf = &data1_tx,
- .rx_buf = &data1_rx,
- .len = 1,
- };
- struct spi_message m;
- wfet_lcd_dotmatrix_write_cmd(1);
- spi_message_init(&m);
- spi_message_add_tail(&t1, &m);
- result = spi_sync(wfet_dotmatrix_datap->spi_device, &m);
复制代码 在将data1_rx的初始值改为0x01后,data1_rx的值可以获得收到的数据,请问这是什么原因?
|
|