GY-63_MS5611/libraries/DAC8554/README.md

108 lines
3.7 KiB
Markdown
Raw Normal View History

2021-01-29 06:31:58 -05:00
[![Arduino CI](https://github.com/RobTillaart/DAC8554/workflows/Arduino%20CI/badge.svg)](https://github.com/marketplace/actions/arduino_ci)
2021-08-30 08:09:24 -04:00
[![Arduino-lint](https://github.com/RobTillaart/DAC8554/actions/workflows/arduino-lint.yml/badge.svg)](https://github.com/RobTillaart/DAC8554/actions/workflows/arduino-lint.yml)
[![JSON check](https://github.com/RobTillaart/DAC8554/actions/workflows/jsoncheck.yml/badge.svg)](https://github.com/RobTillaart/DAC8554/actions/workflows/jsoncheck.yml)
2021-01-29 06:31:58 -05:00
[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/RobTillaart/DAC8554/blob/master/LICENSE)
[![GitHub release](https://img.shields.io/github/release/RobTillaart/DAC8554.svg?maxAge=3600)](https://github.com/RobTillaart/DAC8554/releases)
2021-06-02 02:50:22 -04:00
# DAC8554
2021-01-29 06:31:58 -05:00
Arduino library for DAC8554 SPI Digital Analog Convertor
2020-11-27 05:10:47 -05:00
## Description
2021-01-29 06:31:58 -05:00
The DAC8554 is a SPI based 16 bit DAC with four channels.
2021-08-30 08:09:24 -04:00
**Warning** This library is not tested extensively
2021-01-29 06:31:58 -05:00
## Interface
### Core
- **DAC8554(uint8_t slaveSelect, uint8_t address = 0)** Constructor for hardware SPI,
since 0.2.0 the slaveSelect pin needs to be defined.
- **DAC8554(uint8_t spiData, uint8_t spiClock, uint8_t slaveSelect, uint8_t address = 0)** Constructor for the software SPI
- **void begin()** initializes all pins to default state
- **void setValue(uint8_t channel, uint16_t value)** set the value of the channel to 0 - 65535
- **void setSingleValue(uint8_t channel, uint16_t value)** writes the value to the channel but does not affect buffered ones. TODO - elaborate.
- **uint16_t getValue(uint8_t channel)** returns the last value written.
2021-08-30 08:09:24 -04:00
### Hardware SPI
To be used only if one needs a specific speed.
- **void setSPIspeed(uint32_t speed)** set SPI transfer rate.
- **uint32_t getSPIspeed()** returns SPI transfer rate.
- **bool usesHWSPI()** returns true if HW SPI is used.
### ESP32 specific
- **void selectHSPI()** in case hardware SPI, the ESP32 has two options HSPI and VSPI.
- **void selectVSPI()** see above.
- **bool usesHSPI()** returns true if HSPI is used.
- **bool usesVSPI()** returns true if VSPI is used.
The **selectVSPI()** or the **selectHSPI()** needs to be called
BEFORE the **begin()** function.
#### experimental
- **void setGPIOpins(uint8_t clk, uint8_t miso, uint8_t mosi, uint8_t select)** overrule GPIO pins of ESP32 for hardware SPI. needs to be called
AFTER the **begin()** function.
2021-01-29 06:31:58 -05:00
### Power down
2021-08-30 08:09:24 -04:00
Check datasheet for details.
2021-01-29 06:31:58 -05:00
- **void setPowerDown(uint8_t powerDownMode)** sets power down mode. 0 - 3.
- **uint8_t getPowerDownMode()** returns last written mode.
- **void setSinglePowerDown(uint8_t channel, uint8_t powerDownMode)** does not affect other channels.
2021-08-30 08:09:24 -04:00
| Power down mode | Value |
|:----------------------------|:-----:|
| DAC8554_POWERDOWN_NORMAL | 0x00 |
| DAC8554_POWERDOWN_1K | 0x40 |
| DAC8554_POWERDOWN_100K | 0x80 |
| DAC8554_POWERDOWN_HIGH_IMP | 0xC0 |
2021-01-29 06:31:58 -05:00
### Broadcast
- **void bufferValue(uint8_t channel, uint16_t value)** prepare a new value for a channel.
2021-06-02 02:50:22 -04:00
- **void broadcastBuffer()** write all buffers to all(up to 4) 8554's channel's
2021-01-29 06:31:58 -05:00
- **void broadcastValue(uint16_t value)** write value to all(up to 4) 8554's channel's
- **void broadcastPowerDown(uint8_t powerDownMode)** write powerDownMode to all 8554's channel's
2021-08-30 08:09:24 -04:00
## Future
- testing
2020-11-27 05:10:47 -05:00
## Operation
See examples
**demo_hw_spi.ino**
2021-01-29 06:31:58 -05:00
- write a sawtooth to channel A followed by a sinus
- uses HW SPI
2020-11-27 05:10:47 -05:00
**demo_sw_spi.ino**
2021-01-29 06:31:58 -05:00
- write a sawtooth to channel A followed by a sinus
- uses SW SPI
2020-11-27 05:10:47 -05:00
**demo_same_time_write.ino**
2021-01-29 06:31:58 -05:00
- writes two square waves that trigger at the same time
2020-11-27 05:10:47 -05:00
**demo_sequential_write.ino**
2021-01-29 06:31:58 -05:00
- writes two square waves sequentially (slight time difference)
2020-11-27 05:10:47 -05:00
**demo_powerdown.ino**
2021-01-29 06:31:58 -05:00
- idem
2020-11-27 05:10:47 -05:00