Grzegorz Kaczmarek
/
Max7221
Fix to have load pin working with SPI1.
Fork of Max7221 by
Max7221.h
- Committer:
- ky3orr
- Date:
- 2015-11-23
- Revision:
- 8:3f5901f2f813
- Parent:
- 7:a160cb7cdd86
- Child:
- 9:75bddbfbb692
File content as of revision 8:3f5901f2f813:
/** * @file Max7221.h * @brief Header file for the MAX7219/7221 driver class. * * @author Grzegorz Kaczmarek * @comment Code inspired on earlier Dwayne S. Dilbeck's work * @date 20/11/2015 */ #ifndef Max7221_H #define Max7221_H // MAX7219/7221 register map #define max7219_reg_noop 0x00 #define max7219_reg_decodeMode 0x09 #define max7219_reg_intensity 0x0A #define max7219_reg_scanLimit 0x0B #define max7219_reg_shutdown 0x0C #define max7219_reg_displayTest 0x0F // Logical values #define LOG_0 0 #define LOG_1 1 class Max7221 { private: SPI *mp_spi; // SPI used for this display (no data transmission when NULL) DigitalOut *mp_cs; // /CS signal (it should be handled manually when NULL) unsigned int m_position; // Display position on SPI chain (0 = 1'st) public: /** * Default constructor. * @param spi Initialized SPI port used for communication with MAX7219/7221. * @param cs Initialized output pin used as SW CS signal or NULL when this signal is handled manually. * @param position Position on SPI port (for displays connected in daisy-chain: DOUT-DIN). 0=1st. */ Max7221(SPI *spi, DigitalOut *cs, unsigned int position=0); /** * Method for setting /CS signal LOW (enable data reception). */ void CsLow(void); /** * Method for setting /CS signal HIGH (received data is latched and processed). */ void CsHigh(void); /** * Method used to send data over SPI (no use of /CS signal). * To be used with display chains and when building display libraries * where amount of data needs to be pushed via SPI in one transaction. */ void WriteRaw(unsigned int reg, unsigned int data); /** * Method for sending register-value pair for this diasplay. * Supports display chain on single SPI (m_position > 0). */ void Write(unsigned int reg, unsigned int data); /** * Sets test mode which causes all display LEDs to emit light with full brightess. * @param mode true - test mode, false - normal operation. */ void TestMode(bool mode); /** * Sets amount of digits to be used by this display. * @param digits_no 1 - one digit, (2-7), 8 - all 8 digits. */ void UseDigitsNo(unsigned int digits_no); /** * Selects for which digits Code-B data decoding is used. * @param mode 0x00 - no decoding, 0x0F - digits 0-3, 0xFF - all digits. */ void DecodeMode(unsigned int mode); /** * Sends data to selected digit. * @param digit_no Selected digit (0-7). * @param digit_no Data to display. */ void WriteDigit(unsigned int digit_no, unsigned int value); /** * Sets display brightness. * @param intensity 0x00 - minimum brightness, 0x0F - maximum brightness. */ void Intensity(unsigned int intensity); /** * Sets display operation mode. * @param mode true - normal operation, false - shutdown mode. */ void OperationMode(bool mode); /** * Initial setup of this display. * 8-digit blank decimal display set to nimimal brightness. * Supports display chain on single SPI (m_position > 0). */ void Setup(void); }; #endif