12-Channel LED Driver With Gray scale Adaptive Pulse Density Modulation Control IC Library. maker MY-Semi

Dependents:   Library_MY9221

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?

UserRevisionLine numberNew 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