F746ZG UART Interrupt and Software Uart with DFPlayer Mini(PF_13, PF_14)

Dependencies:   mbed SoftSerial

Committer:
angler
Date:
Fri Apr 23 02:58:41 2021 +0000
Revision:
0:2444e79e5540
F746ZG UART_Interrupt and DFPlayer with software uart(PF_13, PF_14)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
angler 0:2444e79e5540 1 #include "mbed.h"
angler 0:2444e79e5540 2 #include "SoftSerial.h"
angler 0:2444e79e5540 3 //#include "DFPlayer.h"
angler 0:2444e79e5540 4
angler 0:2444e79e5540 5 #ifdef __cplusplus
angler 0:2444e79e5540 6 extern "C" {
angler 0:2444e79e5540 7 #endif
angler 0:2444e79e5540 8 SoftSerial mp3(PF_13, PF_14);
angler 0:2444e79e5540 9
angler 0:2444e79e5540 10 uint8_t is_replay = 0;
angler 0:2444e79e5540 11
angler 0:2444e79e5540 12 uint8_t send_buf[10] = {0x7E, 0xFF, 0x06, 0x03, 00, 00, 01, 0xFE, 0xF6, 0xEF};
angler 0:2444e79e5540 13
angler 0:2444e79e5540 14
angler 0:2444e79e5540 15 void fill_uint16_bigend (uint8_t *thebuf, uint16_t data)
angler 0:2444e79e5540 16 {
angler 0:2444e79e5540 17 *thebuf = (uint8_t)(data>>8);
angler 0:2444e79e5540 18 *(thebuf+1) = (uint8_t)data;
angler 0:2444e79e5540 19 }
angler 0:2444e79e5540 20
angler 0:2444e79e5540 21 uint16_t mp3_get_checksum (uint8_t *thebuf)
angler 0:2444e79e5540 22 {
angler 0:2444e79e5540 23 uint16_t sum = 0;
angler 0:2444e79e5540 24 for (int i=1; i<7; i++) {
angler 0:2444e79e5540 25 sum += thebuf[i];
angler 0:2444e79e5540 26 }
angler 0:2444e79e5540 27 return -sum;
angler 0:2444e79e5540 28 }
angler 0:2444e79e5540 29
angler 0:2444e79e5540 30 void mp3_fill_checksum ()
angler 0:2444e79e5540 31 {
angler 0:2444e79e5540 32 uint16_t checksum = mp3_get_checksum (send_buf);
angler 0:2444e79e5540 33 fill_uint16_bigend (send_buf+7, checksum);
angler 0:2444e79e5540 34 }
angler 0:2444e79e5540 35
angler 0:2444e79e5540 36 void send_func ()
angler 0:2444e79e5540 37 {
angler 0:2444e79e5540 38 int i;
angler 0:2444e79e5540 39 for (i = 0; i < 10; i++) {
angler 0:2444e79e5540 40 mp3.putc(send_buf[i]);
angler 0:2444e79e5540 41 // uart8.printf("%02X ",send_buf[i]);
angler 0:2444e79e5540 42 }
angler 0:2444e79e5540 43 // uart8.printf("\r\n");
angler 0:2444e79e5540 44 // uart8.printf("\r\n");
angler 0:2444e79e5540 45
angler 0:2444e79e5540 46 }
angler 0:2444e79e5540 47
angler 0:2444e79e5540 48 void mp3_send_cmd1 (uint8_t cmd, uint16_t arg)
angler 0:2444e79e5540 49 {
angler 0:2444e79e5540 50 send_buf[3] = cmd;
angler 0:2444e79e5540 51 fill_uint16_bigend ((send_buf+5), arg);
angler 0:2444e79e5540 52 mp3_fill_checksum ();
angler 0:2444e79e5540 53 send_func ();
angler 0:2444e79e5540 54 }
angler 0:2444e79e5540 55
angler 0:2444e79e5540 56 void mp3_send_cmd (uint8_t cmd)
angler 0:2444e79e5540 57 {
angler 0:2444e79e5540 58 send_buf[3] = cmd;
angler 0:2444e79e5540 59 fill_uint16_bigend ((send_buf+5), 0);
angler 0:2444e79e5540 60 mp3_fill_checksum ();
angler 0:2444e79e5540 61 send_func ();
angler 0:2444e79e5540 62 }
angler 0:2444e79e5540 63
angler 0:2444e79e5540 64 void mp3_set_reply (uint8_t state)
angler 0:2444e79e5540 65 {
angler 0:2444e79e5540 66 is_replay = state;
angler 0:2444e79e5540 67 send_buf[4] = is_replay;
angler 0:2444e79e5540 68 }
angler 0:2444e79e5540 69
angler 0:2444e79e5540 70 void mp3_play_physical1 (uint16_t num)
angler 0:2444e79e5540 71 {
angler 0:2444e79e5540 72 mp3_send_cmd1 (0x03, num);
angler 0:2444e79e5540 73 }
angler 0:2444e79e5540 74
angler 0:2444e79e5540 75 void mp3_play_physical ()
angler 0:2444e79e5540 76 {
angler 0:2444e79e5540 77 mp3_send_cmd (0x03);
angler 0:2444e79e5540 78 }
angler 0:2444e79e5540 79
angler 0:2444e79e5540 80 void mp3_next ()
angler 0:2444e79e5540 81 {
angler 0:2444e79e5540 82 mp3_send_cmd (0x01);
angler 0:2444e79e5540 83 }
angler 0:2444e79e5540 84
angler 0:2444e79e5540 85 void mp3_prev ()
angler 0:2444e79e5540 86 {
angler 0:2444e79e5540 87 mp3_send_cmd (0x02);
angler 0:2444e79e5540 88 }
angler 0:2444e79e5540 89
angler 0:2444e79e5540 90 //0x06 set volume 0-30
angler 0:2444e79e5540 91 void mp3_set_volume (uint16_t volume)
angler 0:2444e79e5540 92 {
angler 0:2444e79e5540 93 if(volume > 30)
angler 0:2444e79e5540 94 {
angler 0:2444e79e5540 95 volume = 30;
angler 0:2444e79e5540 96 }
angler 0:2444e79e5540 97 mp3_send_cmd1 (0x06, volume);
angler 0:2444e79e5540 98 }
angler 0:2444e79e5540 99
angler 0:2444e79e5540 100 //0x07 set EQ0/1/2/3/4/5 Normal/Pop/Rock/Jazz/Classic/Bass
angler 0:2444e79e5540 101 void mp3_set_EQ (uint16_t eq)
angler 0:2444e79e5540 102 {
angler 0:2444e79e5540 103 mp3_send_cmd1 (0x07, eq);
angler 0:2444e79e5540 104 }
angler 0:2444e79e5540 105
angler 0:2444e79e5540 106 //0x09 set device 1/2/3/4/5 U/SD/AUX/SLEEP/FLASH
angler 0:2444e79e5540 107 void mp3_set_device (uint16_t device)
angler 0:2444e79e5540 108 {
angler 0:2444e79e5540 109 mp3_send_cmd1 (0x09, device);
angler 0:2444e79e5540 110 }
angler 0:2444e79e5540 111
angler 0:2444e79e5540 112 void mp3_sleep ()
angler 0:2444e79e5540 113 {
angler 0:2444e79e5540 114 mp3_send_cmd (0x0a);
angler 0:2444e79e5540 115 }
angler 0:2444e79e5540 116
angler 0:2444e79e5540 117 void mp3_reset ()
angler 0:2444e79e5540 118 {
angler 0:2444e79e5540 119 mp3_send_cmd (0x0c);
angler 0:2444e79e5540 120 }
angler 0:2444e79e5540 121
angler 0:2444e79e5540 122 void mp3_play ()
angler 0:2444e79e5540 123 {
angler 0:2444e79e5540 124 mp3_send_cmd (0x0d);
angler 0:2444e79e5540 125 }
angler 0:2444e79e5540 126
angler 0:2444e79e5540 127 void mp3_pause ()
angler 0:2444e79e5540 128 {
angler 0:2444e79e5540 129 mp3_send_cmd (0x0e);
angler 0:2444e79e5540 130 }
angler 0:2444e79e5540 131
angler 0:2444e79e5540 132 void mp3_stop ()
angler 0:2444e79e5540 133 {
angler 0:2444e79e5540 134 mp3_send_cmd (0x16);
angler 0:2444e79e5540 135 }
angler 0:2444e79e5540 136
angler 0:2444e79e5540 137 // play mp3 file in mp3 folder in your tf card
angler 0:2444e79e5540 138 void mp3_play1 (uint16_t num)
angler 0:2444e79e5540 139 {
angler 0:2444e79e5540 140 mp3_send_cmd1 (0x12, num);
angler 0:2444e79e5540 141 }
angler 0:2444e79e5540 142
angler 0:2444e79e5540 143 void mp3_get_state ()
angler 0:2444e79e5540 144 {
angler 0:2444e79e5540 145 mp3_send_cmd (0x42);
angler 0:2444e79e5540 146 }
angler 0:2444e79e5540 147
angler 0:2444e79e5540 148 void mp3_get_volume ()
angler 0:2444e79e5540 149 {
angler 0:2444e79e5540 150 mp3_send_cmd (0x43);
angler 0:2444e79e5540 151 }
angler 0:2444e79e5540 152
angler 0:2444e79e5540 153 void mp3_get_u_sum ()
angler 0:2444e79e5540 154 {
angler 0:2444e79e5540 155 mp3_send_cmd (0x47);
angler 0:2444e79e5540 156 }
angler 0:2444e79e5540 157
angler 0:2444e79e5540 158 void mp3_get_tf_sum ()
angler 0:2444e79e5540 159 {
angler 0:2444e79e5540 160 mp3_send_cmd (0x48);
angler 0:2444e79e5540 161 }
angler 0:2444e79e5540 162
angler 0:2444e79e5540 163 void mp3_get_flash_sum ()
angler 0:2444e79e5540 164 {
angler 0:2444e79e5540 165 mp3_send_cmd (0x49);
angler 0:2444e79e5540 166 }
angler 0:2444e79e5540 167
angler 0:2444e79e5540 168 void mp3_get_tf_current ()
angler 0:2444e79e5540 169 {
angler 0:2444e79e5540 170 mp3_send_cmd (0x4c);
angler 0:2444e79e5540 171 }
angler 0:2444e79e5540 172
angler 0:2444e79e5540 173 void mp3_get_u_current ()
angler 0:2444e79e5540 174 {
angler 0:2444e79e5540 175 mp3_send_cmd (0x4b);
angler 0:2444e79e5540 176 }
angler 0:2444e79e5540 177
angler 0:2444e79e5540 178 void mp3_get_flash_current ()
angler 0:2444e79e5540 179 {
angler 0:2444e79e5540 180 mp3_send_cmd (0x4d);
angler 0:2444e79e5540 181 }
angler 0:2444e79e5540 182
angler 0:2444e79e5540 183 void mp3_single_loop (uint8_t state)
angler 0:2444e79e5540 184 {
angler 0:2444e79e5540 185 mp3_send_cmd1 (0x19, !state);
angler 0:2444e79e5540 186 }
angler 0:2444e79e5540 187
angler 0:2444e79e5540 188 void mp3_single_play (uint16_t num)
angler 0:2444e79e5540 189 {
angler 0:2444e79e5540 190 mp3_play1 (num);
angler 0:2444e79e5540 191 wait_ms (10);
angler 0:2444e79e5540 192 mp3_single_loop (true);
angler 0:2444e79e5540 193 }
angler 0:2444e79e5540 194
angler 0:2444e79e5540 195 void mp3_DAC (uint8_t state)
angler 0:2444e79e5540 196 {
angler 0:2444e79e5540 197 mp3_send_cmd1 (0x1a, !state);
angler 0:2444e79e5540 198 }
angler 0:2444e79e5540 199
angler 0:2444e79e5540 200 void mp3_random_play ()
angler 0:2444e79e5540 201 {
angler 0:2444e79e5540 202 mp3_send_cmd (0x18);
angler 0:2444e79e5540 203 }
angler 0:2444e79e5540 204
angler 0:2444e79e5540 205 #ifdef __cplusplus
angler 0:2444e79e5540 206 }
angler 0:2444e79e5540 207 #endif