Comments (4)
Welcome and thanks for reporting.
I think there might be a bug inside the read path of the transfer, when used in half3wire mode , but have to investigate a bit further.
from esp-idf-hal.
.duplex(esp_idf_hal::spi::config::Duplex::Half3Wire)
and
spi_dev.transfer(&mut read_buf, &[0x80 | 0x01, 0x00])?;
are incompatible.
You can't do a transfer with only one wire, you need one wire for reading and one wire for writing.
What you probably want to do there is this.
spi_dev.transaction(&mut [Operation::Read(&mut read_buf), Operation::Write(&[0x80 | 0x01, 0x00]))?;
EDIT:
Actually, thinking about it a bit more, you're probably wanting to write first. Up to you to decide 😄
spi_dev.transaction(&mut [Operation::Write(&[0x80 | 0x01, 0x00]), Operation::Read(&mut read_buf))?;
from esp-idf-hal.
.duplex(esp_idf_hal::spi::config::Duplex::Half3Wire)and
spi_dev.transfer(&mut read_buf, &[0x80 | 0x01, 0x00])?;are incompatible. You can't do a transfer with only one wire, you need one wire for reading and one wire for writing.
What you probably want to do there is this.
spi_dev.transaction(&mut [Operation::Read(&mut read_buf), Operation::Write(&[0x80 | 0x01, 0x00]))?;EDIT:
Actually, thinking about it a bit more, you're probably wanting to write first. Up to you to decide 😄
spi_dev.transaction(&mut [Operation::Write(&[0x80 | 0x01, 0x00]), Operation::Read(&mut read_buf))?;
I tried to solve the problem with your code, but it returned the same error. When I did not select any Duplex (which should be Full-Duplex at this time), the final read_buf only has 0xF.
from esp-idf-hal.
I see. Looks like @Vollbrecht discovered this as well.
From a quick glance it appears we should be setting this to zero in half duplex mode.
This comment should've been taken care of when half duplex was added in this PR. Though I'm a little surprised no one has encountered this issue yet.
from esp-idf-hal.
Related Issues (20)
- Async Uart Write hangs forever HOT 3
- Extra component HOT 6
- esp_idf_hal::delay::Delay missing some methods for embedded_hal::blocking::delay HOT 2
- `AsyncCanDriver` is not `Send` HOT 5
- Hardware acceleration for crypto?
- Conflict between esp-idf-hal and display-interface-spi on embedded-hal version HOT 1
- Documentation/API regarding default input pin pull up/down state HOT 7
- Ubuntu 22.04.3 LTS Cross-Compilation for the target = "riscv32imac-esp-espidf" (IDFGH-11878) HOT 4
- Remove 4096 limit for SPI dma transfer size HOT 2
- Can't enable the `edge-executor` feature HOT 2
- i2c broken on esp32-c6 HOT 1
- Never return type for `reset::restart`
- Simple blink example for RGB Led on Esp32 C6
- Shared I2C bus example HOT 1
- Support async in i2c Driver by using new ESP-IDF V5.2 driver impl
- rmt_neopixel no longer works (on esp32c6) HOT 3
- Mutating struct in ISR HOT 1
- Error: dangerous relocation: call8: call target out of range:(xtensa-esp32s3-espidf) HOT 3
- Transport(Failed to load system certs: No valid certificate found) (xtensa-esp32s3-espidf/STD) HOT 4
- need uart dtr, for rs485 control HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from esp-idf-hal.