同時公開のFunctionGenerator-DACと同時利用によりファンクション・ジェネレータを実現する。

Dependencies:   BLE_API mbed nRF51822

FunctionGenerator-DAC

/users/ohneta/code/FunctionGenerator-DAC/

詳細は上記、FunctionGenerator-DACでおこないます。

Committer:
ohneta
Date:
Tue Jun 16 07:20:05 2015 +0000
Revision:
0:6e47fe8d8f5c
1st release commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ohneta 0:6e47fe8d8f5c 1 //---------------------------------------------------------
ohneta 0:6e47fe8d8f5c 2 /**
ohneta 0:6e47fe8d8f5c 3 * FunctionGenCommands.h
ohneta 0:6e47fe8d8f5c 4 */
ohneta 0:6e47fe8d8f5c 5 //---------------------------------------------------------
ohneta 0:6e47fe8d8f5c 6
ohneta 0:6e47fe8d8f5c 7 #define FGC_BUFFERTRANSFER_MAX 16
ohneta 0:6e47fe8d8f5c 8
ohneta 0:6e47fe8d8f5c 9 typedef enum {
ohneta 0:6e47fe8d8f5c 10 // commands
ohneta 0:6e47fe8d8f5c 11 FGCommand_Non = 0x00,
ohneta 0:6e47fe8d8f5c 12 FGCommand_Device,
ohneta 0:6e47fe8d8f5c 13 FGCommand_Output,
ohneta 0:6e47fe8d8f5c 14 FGCommand_Frequency,
ohneta 0:6e47fe8d8f5c 15 FGCommand_WaveformInfo,
ohneta 0:6e47fe8d8f5c 16 FGCommand_WaveformBlock,
ohneta 0:6e47fe8d8f5c 17 FGCommand_WaveformToBuffer,
ohneta 0:6e47fe8d8f5c 18
ohneta 0:6e47fe8d8f5c 19 // status
ohneta 0:6e47fe8d8f5c 20 FGStatus_Device = 0x80 | FGCommand_Device,
ohneta 0:6e47fe8d8f5c 21 FGStatus_Output = 0x80 | FGCommand_Output,
ohneta 0:6e47fe8d8f5c 22 FGStatus_Frequency = 0x80 | FGCommand_Frequency,
ohneta 0:6e47fe8d8f5c 23
ohneta 0:6e47fe8d8f5c 24 // special
ohneta 0:6e47fe8d8f5c 25 FGCommand_Reset = 0xff,
ohneta 0:6e47fe8d8f5c 26
ohneta 0:6e47fe8d8f5c 27 } enumFGCommand;
ohneta 0:6e47fe8d8f5c 28
ohneta 0:6e47fe8d8f5c 29
ohneta 0:6e47fe8d8f5c 30 // Characteristics
ohneta 0:6e47fe8d8f5c 31 #define CHARACTERISTICS_UUID_RESET 0xA100
ohneta 0:6e47fe8d8f5c 32 #define CHARACTERISTICS_UUID_DEVICE 0xA101
ohneta 0:6e47fe8d8f5c 33 #define CHARACTERISTICS_UUID_OUTPUT 0xA102
ohneta 0:6e47fe8d8f5c 34 #define CHARACTERISTICS_UUID_FREQUENCY 0xA103
ohneta 0:6e47fe8d8f5c 35 #define CHARACTERISTICS_UUID_WAVEFORMINFO 0xA110
ohneta 0:6e47fe8d8f5c 36 #define CHARACTERISTICS_UUID_WAVEFORMBLOCK 0xA111
ohneta 0:6e47fe8d8f5c 37 #define CHARACTERISTICS_UUID_WAVEFORMTOBUFFER 0xA112
ohneta 0:6e47fe8d8f5c 38
ohneta 0:6e47fe8d8f5c 39 //---------------------------------------------------------
ohneta 0:6e47fe8d8f5c 40 #pragma pack(1)
ohneta 0:6e47fe8d8f5c 41 // for BLE waveform transfer format
ohneta 0:6e47fe8d8f5c 42
ohneta 0:6e47fe8d8f5c 43 typedef struct {
ohneta 0:6e47fe8d8f5c 44 uint16_t waveSize; // Waveform全体のデータ長(byte) = blockSize * blockMaxNum
ohneta 0:6e47fe8d8f5c 45 uint8_t bitPerData; // 1データあたりのbit数 (8, 10, 12 or 16bit)
ohneta 0:6e47fe8d8f5c 46
ohneta 0:6e47fe8d8f5c 47 uint8_t blockSize; // 1ブロックあたりのデータ転送サイズ(byte) (通常16bytes)
ohneta 0:6e47fe8d8f5c 48 uint8_t blockMaxNum; // ブロックの最大数 = (waveSize + 1) / blockSize
ohneta 0:6e47fe8d8f5c 49 } WaveformInfo, FGCommandWaveformInfo;
ohneta 0:6e47fe8d8f5c 50
ohneta 0:6e47fe8d8f5c 51 typedef struct {
ohneta 0:6e47fe8d8f5c 52 uint16_t blockNo; // ブロックNo. 0 〜 (WaveformInfo.blockMaxNum - 1)
ohneta 0:6e47fe8d8f5c 53 uint8_t length; // WaveformBlock.bufferの有効な長さ
ohneta 0:6e47fe8d8f5c 54 uint8_t buffer[FGC_BUFFERTRANSFER_MAX]; // 実際のデータ
ohneta 0:6e47fe8d8f5c 55 } WaveformBlock, FGCommandWaveformBlock;
ohneta 0:6e47fe8d8f5c 56
ohneta 0:6e47fe8d8f5c 57 //---------------------------------------------------------
ohneta 0:6e47fe8d8f5c 58 // for I2C packet format
ohneta 0:6e47fe8d8f5c 59
ohneta 0:6e47fe8d8f5c 60 // header
ohneta 0:6e47fe8d8f5c 61 typedef struct {
ohneta 0:6e47fe8d8f5c 62 uint8_t command;
ohneta 0:6e47fe8d8f5c 63 uint8_t length;
ohneta 0:6e47fe8d8f5c 64 } FGHeader;
ohneta 0:6e47fe8d8f5c 65
ohneta 0:6e47fe8d8f5c 66 // command bodys
ohneta 0:6e47fe8d8f5c 67 typedef struct {
ohneta 0:6e47fe8d8f5c 68 uint8_t device;
ohneta 0:6e47fe8d8f5c 69 } FGCommandDevice;
ohneta 0:6e47fe8d8f5c 70
ohneta 0:6e47fe8d8f5c 71 typedef struct {
ohneta 0:6e47fe8d8f5c 72 uint8_t on;
ohneta 0:6e47fe8d8f5c 73 } FGCommandOutput;
ohneta 0:6e47fe8d8f5c 74
ohneta 0:6e47fe8d8f5c 75 typedef struct {
ohneta 0:6e47fe8d8f5c 76 uint32_t frequency;
ohneta 0:6e47fe8d8f5c 77 } FGCommandFrequency;
ohneta 0:6e47fe8d8f5c 78
ohneta 0:6e47fe8d8f5c 79 //#define FGCommandWaveformInfo WaveformInfo
ohneta 0:6e47fe8d8f5c 80 //#define FGCommandWaveformBlock WaveformInfoBlock
ohneta 0:6e47fe8d8f5c 81
ohneta 0:6e47fe8d8f5c 82 typedef struct {
ohneta 0:6e47fe8d8f5c 83 } FGCommandWaveformToBuffer;
ohneta 0:6e47fe8d8f5c 84
ohneta 0:6e47fe8d8f5c 85 typedef struct {
ohneta 0:6e47fe8d8f5c 86 } FGCommandReset;
ohneta 0:6e47fe8d8f5c 87
ohneta 0:6e47fe8d8f5c 88 // status bodys
ohneta 0:6e47fe8d8f5c 89 typedef struct {
ohneta 0:6e47fe8d8f5c 90 uint8_t device;
ohneta 0:6e47fe8d8f5c 91 } FGStatusDevice;
ohneta 0:6e47fe8d8f5c 92
ohneta 0:6e47fe8d8f5c 93 typedef struct {
ohneta 0:6e47fe8d8f5c 94 uint8_t xxx;
ohneta 0:6e47fe8d8f5c 95 } FGStatusOutput;
ohneta 0:6e47fe8d8f5c 96
ohneta 0:6e47fe8d8f5c 97 typedef struct {
ohneta 0:6e47fe8d8f5c 98 uint8_t xxx;
ohneta 0:6e47fe8d8f5c 99 } FGStatusFrequency;
ohneta 0:6e47fe8d8f5c 100
ohneta 0:6e47fe8d8f5c 101
ohneta 0:6e47fe8d8f5c 102
ohneta 0:6e47fe8d8f5c 103 // command Packet format
ohneta 0:6e47fe8d8f5c 104 typedef struct {
ohneta 0:6e47fe8d8f5c 105 FGHeader header;
ohneta 0:6e47fe8d8f5c 106 union {
ohneta 0:6e47fe8d8f5c 107 FGCommandDevice commandDevice;
ohneta 0:6e47fe8d8f5c 108 FGCommandOutput commandOutput;
ohneta 0:6e47fe8d8f5c 109 FGCommandFrequency commandFrequency;
ohneta 0:6e47fe8d8f5c 110 FGCommandWaveformInfo commandWaveformInfo;
ohneta 0:6e47fe8d8f5c 111 FGCommandWaveformBlock commandWaveformBlock;
ohneta 0:6e47fe8d8f5c 112 FGCommandWaveformToBuffer commandWaveformToBuffer;
ohneta 0:6e47fe8d8f5c 113
ohneta 0:6e47fe8d8f5c 114 FGCommandReset commandReset;
ohneta 0:6e47fe8d8f5c 115
ohneta 0:6e47fe8d8f5c 116 FGStatusDevice statusDevice;
ohneta 0:6e47fe8d8f5c 117 FGStatusOutput statusOutput;
ohneta 0:6e47fe8d8f5c 118 FGStatusFrequency statusFrequency;
ohneta 0:6e47fe8d8f5c 119 } body;
ohneta 0:6e47fe8d8f5c 120 } FGPacket;
ohneta 0:6e47fe8d8f5c 121
ohneta 0:6e47fe8d8f5c 122 #pragma pack()