Grzegorz Kaczmarek
/
Max7221
Fix to have load pin working with SPI1.
Fork of Max7221 by
Max7221.h@8:3f5901f2f813, 2015-11-23 (annotated)
- Committer:
- ky3orr
- Date:
- Mon Nov 23 11:38:17 2015 +0000
- Revision:
- 8:3f5901f2f813
- Parent:
- 7:a160cb7cdd86
- Child:
- 9:75bddbfbb692
Small updates to the documentation.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jakowisp | 2:828c62cc1861 | 1 | /** |
jakowisp | 2:828c62cc1861 | 2 | * @file Max7221.h |
ky3orr | 7:a160cb7cdd86 | 3 | * @brief Header file for the MAX7219/7221 driver class. |
jakowisp | 2:828c62cc1861 | 4 | * |
ky3orr | 7:a160cb7cdd86 | 5 | * @author Grzegorz Kaczmarek |
ky3orr | 8:3f5901f2f813 | 6 | * @comment Code inspired on earlier Dwayne S. Dilbeck's work |
ky3orr | 7:a160cb7cdd86 | 7 | * @date 20/11/2015 |
jakowisp | 2:828c62cc1861 | 8 | */ |
ky3orr | 7:a160cb7cdd86 | 9 | |
jakowisp | 1:d8589d1f368c | 10 | #ifndef Max7221_H |
jakowisp | 1:d8589d1f368c | 11 | #define Max7221_H |
jakowisp | 1:d8589d1f368c | 12 | |
ky3orr | 7:a160cb7cdd86 | 13 | // MAX7219/7221 register map |
jakowisp | 4:e2b160410338 | 14 | #define max7219_reg_noop 0x00 |
jakowisp | 4:e2b160410338 | 15 | #define max7219_reg_decodeMode 0x09 |
ky3orr | 8:3f5901f2f813 | 16 | #define max7219_reg_intensity 0x0A |
ky3orr | 8:3f5901f2f813 | 17 | #define max7219_reg_scanLimit 0x0B |
ky3orr | 8:3f5901f2f813 | 18 | #define max7219_reg_shutdown 0x0C |
ky3orr | 8:3f5901f2f813 | 19 | #define max7219_reg_displayTest 0x0F |
jakowisp | 4:e2b160410338 | 20 | |
ky3orr | 7:a160cb7cdd86 | 21 | // Logical values |
ky3orr | 7:a160cb7cdd86 | 22 | #define LOG_0 0 |
ky3orr | 7:a160cb7cdd86 | 23 | #define LOG_1 1 |
jakowisp | 4:e2b160410338 | 24 | |
jakowisp | 1:d8589d1f368c | 25 | class Max7221 { |
ky3orr | 7:a160cb7cdd86 | 26 | private: |
ky3orr | 7:a160cb7cdd86 | 27 | SPI *mp_spi; // SPI used for this display (no data transmission when NULL) |
ky3orr | 8:3f5901f2f813 | 28 | DigitalOut *mp_cs; // /CS signal (it should be handled manually when NULL) |
ky3orr | 7:a160cb7cdd86 | 29 | unsigned int m_position; // Display position on SPI chain (0 = 1'st) |
ky3orr | 7:a160cb7cdd86 | 30 | |
jakowisp | 1:d8589d1f368c | 31 | public: |
jakowisp | 4:e2b160410338 | 32 | /** |
ky3orr | 7:a160cb7cdd86 | 33 | * Default constructor. |
ky3orr | 7:a160cb7cdd86 | 34 | * @param spi Initialized SPI port used for communication with MAX7219/7221. |
ky3orr | 8:3f5901f2f813 | 35 | * @param cs Initialized output pin used as SW CS signal or NULL when this signal is handled manually. |
ky3orr | 7:a160cb7cdd86 | 36 | * @param position Position on SPI port (for displays connected in daisy-chain: DOUT-DIN). 0=1st. |
ky3orr | 7:a160cb7cdd86 | 37 | */ |
ky3orr | 7:a160cb7cdd86 | 38 | Max7221(SPI *spi, DigitalOut *cs, unsigned int position=0); |
ky3orr | 7:a160cb7cdd86 | 39 | |
ky3orr | 7:a160cb7cdd86 | 40 | /** |
ky3orr | 7:a160cb7cdd86 | 41 | * Method for setting /CS signal LOW (enable data reception). |
jakowisp | 4:e2b160410338 | 42 | */ |
ky3orr | 7:a160cb7cdd86 | 43 | void CsLow(void); |
ky3orr | 7:a160cb7cdd86 | 44 | |
ky3orr | 7:a160cb7cdd86 | 45 | /** |
ky3orr | 7:a160cb7cdd86 | 46 | * Method for setting /CS signal HIGH (received data is latched and processed). |
ky3orr | 7:a160cb7cdd86 | 47 | */ |
ky3orr | 7:a160cb7cdd86 | 48 | void CsHigh(void); |
ky3orr | 7:a160cb7cdd86 | 49 | |
ky3orr | 7:a160cb7cdd86 | 50 | /** |
ky3orr | 7:a160cb7cdd86 | 51 | * Method used to send data over SPI (no use of /CS signal). |
ky3orr | 7:a160cb7cdd86 | 52 | * To be used with display chains and when building display libraries |
ky3orr | 7:a160cb7cdd86 | 53 | * where amount of data needs to be pushed via SPI in one transaction. |
ky3orr | 7:a160cb7cdd86 | 54 | */ |
ky3orr | 7:a160cb7cdd86 | 55 | void WriteRaw(unsigned int reg, unsigned int data); |
jakowisp | 1:d8589d1f368c | 56 | |
jakowisp | 4:e2b160410338 | 57 | /** |
ky3orr | 7:a160cb7cdd86 | 58 | * Method for sending register-value pair for this diasplay. |
ky3orr | 7:a160cb7cdd86 | 59 | * Supports display chain on single SPI (m_position > 0). |
jakowisp | 4:e2b160410338 | 60 | */ |
ky3orr | 7:a160cb7cdd86 | 61 | void Write(unsigned int reg, unsigned int data); |
jakowisp | 2:828c62cc1861 | 62 | |
jakowisp | 4:e2b160410338 | 63 | /** |
ky3orr | 7:a160cb7cdd86 | 64 | * Sets test mode which causes all display LEDs to emit light with full brightess. |
ky3orr | 7:a160cb7cdd86 | 65 | * @param mode true - test mode, false - normal operation. |
ky3orr | 7:a160cb7cdd86 | 66 | */ |
ky3orr | 7:a160cb7cdd86 | 67 | void TestMode(bool mode); |
ky3orr | 7:a160cb7cdd86 | 68 | |
ky3orr | 7:a160cb7cdd86 | 69 | /** |
ky3orr | 7:a160cb7cdd86 | 70 | * Sets amount of digits to be used by this display. |
ky3orr | 7:a160cb7cdd86 | 71 | * @param digits_no 1 - one digit, (2-7), 8 - all 8 digits. |
ky3orr | 7:a160cb7cdd86 | 72 | */ |
ky3orr | 7:a160cb7cdd86 | 73 | void UseDigitsNo(unsigned int digits_no); |
jakowisp | 2:828c62cc1861 | 74 | |
jakowisp | 4:e2b160410338 | 75 | /** |
ky3orr | 7:a160cb7cdd86 | 76 | * Selects for which digits Code-B data decoding is used. |
ky3orr | 7:a160cb7cdd86 | 77 | * @param mode 0x00 - no decoding, 0x0F - digits 0-3, 0xFF - all digits. |
ky3orr | 7:a160cb7cdd86 | 78 | */ |
ky3orr | 7:a160cb7cdd86 | 79 | void DecodeMode(unsigned int mode); |
jakowisp | 4:e2b160410338 | 80 | |
jakowisp | 4:e2b160410338 | 81 | /** |
ky3orr | 7:a160cb7cdd86 | 82 | * Sends data to selected digit. |
ky3orr | 7:a160cb7cdd86 | 83 | * @param digit_no Selected digit (0-7). |
ky3orr | 7:a160cb7cdd86 | 84 | * @param digit_no Data to display. |
ky3orr | 7:a160cb7cdd86 | 85 | */ |
ky3orr | 7:a160cb7cdd86 | 86 | void WriteDigit(unsigned int digit_no, unsigned int value); |
jakowisp | 2:828c62cc1861 | 87 | |
jakowisp | 4:e2b160410338 | 88 | /** |
ky3orr | 7:a160cb7cdd86 | 89 | * Sets display brightness. |
ky3orr | 7:a160cb7cdd86 | 90 | * @param intensity 0x00 - minimum brightness, 0x0F - maximum brightness. |
ky3orr | 7:a160cb7cdd86 | 91 | */ |
ky3orr | 7:a160cb7cdd86 | 92 | void Intensity(unsigned int intensity); |
ky3orr | 7:a160cb7cdd86 | 93 | |
ky3orr | 7:a160cb7cdd86 | 94 | /** |
ky3orr | 7:a160cb7cdd86 | 95 | * Sets display operation mode. |
ky3orr | 7:a160cb7cdd86 | 96 | * @param mode true - normal operation, false - shutdown mode. |
ky3orr | 7:a160cb7cdd86 | 97 | */ |
ky3orr | 7:a160cb7cdd86 | 98 | void OperationMode(bool mode); |
ky3orr | 7:a160cb7cdd86 | 99 | |
ky3orr | 7:a160cb7cdd86 | 100 | /** |
ky3orr | 7:a160cb7cdd86 | 101 | * Initial setup of this display. |
ky3orr | 7:a160cb7cdd86 | 102 | * 8-digit blank decimal display set to nimimal brightness. |
ky3orr | 7:a160cb7cdd86 | 103 | * Supports display chain on single SPI (m_position > 0). |
jakowisp | 4:e2b160410338 | 104 | */ |
ky3orr | 7:a160cb7cdd86 | 105 | void Setup(void); |
jakowisp | 1:d8589d1f368c | 106 | }; |
jakowisp | 1:d8589d1f368c | 107 | |
jakowisp | 1:d8589d1f368c | 108 | #endif |