12-Channel LED Driver With Gray scale Adaptive Pulse Density Modulation Control IC Library. maker MY-Semi
MY9221.h@0:3a18655ada14, 2017-10-19 (annotated)
- Committer:
- suupen
- Date:
- Thu Oct 19 05:28:32 2017 +0000
- Revision:
- 0:3a18655ada14
- Child:
- 1:60440eb16f81
library?????main.cpp????????????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
suupen | 0:3a18655ada14 | 1 | #ifndef MBED_MY9221_H |
suupen | 0:3a18655ada14 | 2 | #define MBED_MY9221_H |
suupen | 0:3a18655ada14 | 3 | |
suupen | 0:3a18655ada14 | 4 | #include "mbed.h" |
suupen | 0:3a18655ada14 | 5 | #include "MY9221.h" |
suupen | 0:3a18655ada14 | 6 | |
suupen | 0:3a18655ada14 | 7 | |
suupen | 0:3a18655ada14 | 8 | /** |
suupen | 0:3a18655ada14 | 9 | * LED driver MY9221 |
suupen | 0:3a18655ada14 | 10 | */ |
suupen | 0:3a18655ada14 | 11 | |
suupen | 0:3a18655ada14 | 12 | |
suupen | 0:3a18655ada14 | 13 | /** |
suupen | 0:3a18655ada14 | 14 | * @class MY9221 |
suupen | 0:3a18655ada14 | 15 | * @brief nothine |
suupen | 0:3a18655ada14 | 16 | */ |
suupen | 0:3a18655ada14 | 17 | class MY9221 |
suupen | 0:3a18655ada14 | 18 | { |
suupen | 0:3a18655ada14 | 19 | |
suupen | 0:3a18655ada14 | 20 | public: |
suupen | 0:3a18655ada14 | 21 | |
suupen | 0:3a18655ada14 | 22 | /** Create a MY9221 port, connected to the specified IC pins |
suupen | 0:3a18655ada14 | 23 | * @param DI pin |
suupen | 0:3a18655ada14 | 24 | * @param DCKI pin |
suupen | 0:3a18655ada14 | 25 | * @param IC serial connection number :min = 1(default) |
suupen | 0:3a18655ada14 | 26 | * @note nothing |
suupen | 0:3a18655ada14 | 27 | */ |
suupen | 0:3a18655ada14 | 28 | MY9221(PinName di, PinName dcki, uint8_t number = 1); |
suupen | 0:3a18655ada14 | 29 | |
suupen | 0:3a18655ada14 | 30 | /** |
suupen | 0:3a18655ada14 | 31 | * start of driver. |
suupen | 0:3a18655ada14 | 32 | */ |
suupen | 0:3a18655ada14 | 33 | void start(void); |
suupen | 0:3a18655ada14 | 34 | |
suupen | 0:3a18655ada14 | 35 | /** |
suupen | 0:3a18655ada14 | 36 | * stop of driver. |
suupen | 0:3a18655ada14 | 37 | */ |
suupen | 0:3a18655ada14 | 38 | void stop(void); |
suupen | 0:3a18655ada14 | 39 | |
suupen | 0:3a18655ada14 | 40 | /** |
suupen | 0:3a18655ada14 | 41 | * clear of data. |
suupen | 0:3a18655ada14 | 42 | */ |
suupen | 0:3a18655ada14 | 43 | void dataClear(void); |
suupen | 0:3a18655ada14 | 44 | |
suupen | 0:3a18655ada14 | 45 | /** |
suupen | 0:3a18655ada14 | 46 | * set of commant |
suupen | 0:3a18655ada14 | 47 | * @param uint16_t command MY9221 commandset |
suupen | 0:3a18655ada14 | 48 | */ |
suupen | 0:3a18655ada14 | 49 | void commandSet(uint16_t command); |
suupen | 0:3a18655ada14 | 50 | |
suupen | 0:3a18655ada14 | 51 | //========================= |
suupen | 0:3a18655ada14 | 52 | // command data description |
suupen | 0:3a18655ada14 | 53 | //========================= |
suupen | 0:3a18655ada14 | 54 | // 0x0000にクリアした上で、下記の定義をorしていく |
suupen | 0:3a18655ada14 | 55 | |
suupen | 0:3a18655ada14 | 56 | // CMD[10] 0000 0x00 0000 0000 lout Tr/Tf select |
suupen | 0:3a18655ada14 | 57 | #define LOUT_SLOW_MODE (0x0000) |
suupen | 0:3a18655ada14 | 58 | #define LOUT_FAST_MODE (0x0400) |
suupen | 0:3a18655ada14 | 59 | |
suupen | 0:3a18655ada14 | 60 | // CMD[9:8] 0000 00xx 0000 0000 Gryascale resolution select |
suupen | 0:3a18655ada14 | 61 | #define GRAYSCALE_8BIT (0x0000) |
suupen | 0:3a18655ada14 | 62 | #define GRAYSCALE_12BIT (0x0100) |
suupen | 0:3a18655ada14 | 63 | #define GRAYSCALE_14BIT (0x0200) |
suupen | 0:3a18655ada14 | 64 | #define GRAYSCALE_16BIT (0x0300) |
suupen | 0:3a18655ada14 | 65 | |
suupen | 0:3a18655ada14 | 66 | // CMD[7:5] 0000 0000 xxx0 0000 Internal oscillator freq select |
suupen | 0:3a18655ada14 | 67 | #define ORIGINAL_FREQ1 (0x0000) |
suupen | 0:3a18655ada14 | 68 | #define ORIGINAL_FREQ2 (0x0020) |
suupen | 0:3a18655ada14 | 69 | #define ORIGINAL_FREQ4 (0x0040) |
suupen | 0:3a18655ada14 | 70 | #define ORIGINAL_FREQ8 (0x0060) |
suupen | 0:3a18655ada14 | 71 | #define ORIGINAL_FREQ16 (0x0080) |
suupen | 0:3a18655ada14 | 72 | #define ORIGINAL_FREQ64 (0x00a0) |
suupen | 0:3a18655ada14 | 73 | #define ORIGINAL_FREQ128 (0x00c0) |
suupen | 0:3a18655ada14 | 74 | #define ORIGINAL_FREQ256 (0x00e0) |
suupen | 0:3a18655ada14 | 75 | |
suupen | 0:3a18655ada14 | 76 | // CMD[4] 0000 0000 000x 0000 Output waveform select |
suupen | 0:3a18655ada14 | 77 | #define WAVE_MYPWM (0x0000) // Only Grayscale = 8bit |
suupen | 0:3a18655ada14 | 78 | #define WAVE_APDM (0x0010) |
suupen | 0:3a18655ada14 | 79 | |
suupen | 0:3a18655ada14 | 80 | // CMD[3] 0000 0000 0000 x000 Grayscale clock source select |
suupen | 0:3a18655ada14 | 81 | #define GCLOCK_INTERNAL (0x0000) |
suupen | 0:3a18655ada14 | 82 | #define GCLOCK_EXTERNAL (0x0008) |
suupen | 0:3a18655ada14 | 83 | |
suupen | 0:3a18655ada14 | 84 | // CMD[2] 0000 0000 0000 0x00 Output polarity select |
suupen | 0:3a18655ada14 | 85 | #define WORK_LED (0x0000) |
suupen | 0:3a18655ada14 | 86 | #define WORK_MYPWM (0x0004) |
suupen | 0:3a18655ada14 | 87 | |
suupen | 0:3a18655ada14 | 88 | // CMD[1] 0000 0000 0000 00x0 Counter reset select |
suupen | 0:3a18655ada14 | 89 | #define COUNTER_FREE (0x0000) |
suupen | 0:3a18655ada14 | 90 | #define COUNTER_RESET (0x0002) |
suupen | 0:3a18655ada14 | 91 | |
suupen | 0:3a18655ada14 | 92 | // CMD[0] 0000 0000 0000 000x One-shot select |
suupen | 0:3a18655ada14 | 93 | #define SHOT_REPEAT (0x0000) |
suupen | 0:3a18655ada14 | 94 | #define SHOT_SHOT (0x0001) |
suupen | 0:3a18655ada14 | 95 | |
suupen | 0:3a18655ada14 | 96 | // commandData_t D[]の配列番号 |
suupen | 0:3a18655ada14 | 97 | // MY9221のOUTxの番号と配列番号をあわせるための定義 |
suupen | 0:3a18655ada14 | 98 | #define OUT3 (0) |
suupen | 0:3a18655ada14 | 99 | #define OUT2 (1) |
suupen | 0:3a18655ada14 | 100 | #define OUT1 (2) |
suupen | 0:3a18655ada14 | 101 | #define OUT0 (3) |
suupen | 0:3a18655ada14 | 102 | |
suupen | 0:3a18655ada14 | 103 | //========================= |
suupen | 0:3a18655ada14 | 104 | // MY9221 command data 定義 |
suupen | 0:3a18655ada14 | 105 | //========================= |
suupen | 0:3a18655ada14 | 106 | typedef struct { |
suupen | 0:3a18655ada14 | 107 | uint16_t DA; |
suupen | 0:3a18655ada14 | 108 | uint16_t DB; |
suupen | 0:3a18655ada14 | 109 | uint16_t DC; |
suupen | 0:3a18655ada14 | 110 | } dataSet_t; |
suupen | 0:3a18655ada14 | 111 | |
suupen | 0:3a18655ada14 | 112 | typedef struct { |
suupen | 0:3a18655ada14 | 113 | uint16_t CMD; |
suupen | 0:3a18655ada14 | 114 | dataSet_t D[4]; // [0]:OUT3 [1]:OUT2 [2]:OUT1 [3]:OUT0 |
suupen | 0:3a18655ada14 | 115 | } commandData_t; |
suupen | 0:3a18655ada14 | 116 | |
suupen | 0:3a18655ada14 | 117 | |
suupen | 0:3a18655ada14 | 118 | |
suupen | 0:3a18655ada14 | 119 | //---------------------------------------------------------- |
suupen | 0:3a18655ada14 | 120 | private: |
suupen | 0:3a18655ada14 | 121 | |
suupen | 0:3a18655ada14 | 122 | /** send one word data |
suupen | 0:3a18655ada14 | 123 | * @param uint16_t data : send data |
suupen | 0:3a18655ada14 | 124 | * @param return none |
suupen | 0:3a18655ada14 | 125 | */ |
suupen | 0:3a18655ada14 | 126 | void sendWord(uint16_t data); |
suupen | 0:3a18655ada14 | 127 | |
suupen | 0:3a18655ada14 | 128 | /** data latch & display |
suupen | 0:3a18655ada14 | 129 | * @param none |
suupen | 0:3a18655ada14 | 130 | * @param return none |
suupen | 0:3a18655ada14 | 131 | */ |
suupen | 0:3a18655ada14 | 132 | void latch(void); |
suupen | 0:3a18655ada14 | 133 | |
suupen | 0:3a18655ada14 | 134 | DigitalOut _di; |
suupen | 0:3a18655ada14 | 135 | DigitalOut _dcki; |
suupen | 0:3a18655ada14 | 136 | |
suupen | 0:3a18655ada14 | 137 | |
suupen | 0:3a18655ada14 | 138 | int8_t _number; |
suupen | 0:3a18655ada14 | 139 | |
suupen | 0:3a18655ada14 | 140 | /* |
suupen | 0:3a18655ada14 | 141 | volatile int16_t _onEdge; |
suupen | 0:3a18655ada14 | 142 | volatile int16_t _offEdge; |
suupen | 0:3a18655ada14 | 143 | volatile int16_t _levelNow; |
suupen | 0:3a18655ada14 | 144 | volatile int16_t _levelOld; |
suupen | 0:3a18655ada14 | 145 | */ |
suupen | 0:3a18655ada14 | 146 | }; |
suupen | 0:3a18655ada14 | 147 | |
suupen | 0:3a18655ada14 | 148 | #endif // MBED_PCA9547_H |