코딩중(20240607)

master
imbis 5 months ago
parent c470ec2102
commit 131e37c4c2

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

@ -5,6 +5,8 @@
"mxc_delay.h": "c", "mxc_delay.h": "c",
"system_func.h": "c", "system_func.h": "c",
"ssd1306_i2c.h": "c", "ssd1306_i2c.h": "c",
"font.h": "c" "font.h": "c",
"stdarg.h": "c",
"app_log.h": "c"
} }
} }

@ -0,0 +1,853 @@
#include "app_cli.h"
#include "sw_timer.h"
#include "app_uart.h"
#include <stdlib.h>
#define CLI_KEY_BACK 0x7F
#define CLI_KEY_DEL 0x7E
#define CLI_KEY_ENTER 0x0D
#define CLI_KEY_ESC 0x1B
#define CLI_KEY_LEFT 0x44
#define CLI_KEY_RIGHT 0x43
#define CLI_KEY_UP 0x41
#define CLI_KEY_DOWN 0x42
#define CLI_KEY_HOME 0x31
#define CLI_KEY_END 0x34
#define CLI_PROMPT_STR "CLI# "
#define CLI_ARGS_MAX 32
#define CLI_PRINT_BUF_MAX 256
enum
{
CLI_RX_IDLE,
CLI_RX_SP1,
CLI_RX_SP2,
CLI_RX_SP3,
CLI_RX_SP4,
};
typedef struct
{
char cmd_str[CLI_CMD_NAME_MAX];
void (*cmd_func)(cli_args_t *);
} cli_cmd_t;
typedef struct
{
uint8_t buf[CLI_LINE_BUF_MAX];
uint8_t buf_len;
uint8_t cursor;
uint8_t count;
} cli_line_t;
typedef struct
{
uint8_t ch;
uint32_t baud;
bool is_open;
bool is_log;
uint8_t log_ch;
uint32_t log_baud;
uint8_t state;
char print_buffer[CLI_PRINT_BUF_MAX];
uint16_t argc;
char *argv[CLI_ARGS_MAX];
bool hist_line_new;
int8_t hist_line_i;
uint8_t hist_line_last;
uint8_t hist_line_count;
cli_line_t line_buf[CLI_LINE_HIS_MAX];
cli_line_t line;
uint16_t cmd_count;
cli_cmd_t cmd_list[CLI_CMD_LIST_MAX];
cli_args_t cmd_args;
} cli_t;
cli_t cli_node;
static bool cliUpdate(cli_t *p_cli, uint8_t rx_data);
static void cliLineClean(cli_t *p_cli);
static void cliLineAdd(cli_t *p_cli);
static void cliLineChange(cli_t *p_cli, int8_t key_up);
static void cliShowPrompt(cli_t *p_cli);
static void cliToUpper(char *str);
static bool cliRunCmd(cli_t *p_cli);
static bool cliParseArgs(cli_t *p_cli);
static int32_t cliArgsGetData(uint8_t index);
static float cliArgsGetFloat(uint8_t index);
static char *cliArgsGetStr(uint8_t index);
static bool cliArgsIsStr(uint8_t index, char *p_str);
static void uartPrintf(uint8_t ch, const char *format, ...);
static uint32_t uartWrite(uint8_t ch, uint8_t* pTxData, uint32_t txLen);
void cliShowList(cli_args_t *args);
void cliMemoryDump(cli_args_t *args);
bool cliInit(void);
void cliMain(void);
bool cliAdd(const char *cmd_str, void (*p_func)(cli_args_t *));
void cliPrintf(const char *fmt, ...);
#if 0
bool cliOpen(uint8_t ch, uint32_t baud);
bool cliOpenLog(uint8_t ch, uint32_t baud);
bool cliAdd(const char *cmd_str, void (*p_func)(cli_args_t *));
bool cliKeepLoop(void);
uint32_t cliAvailable(void);
uint8_t cliRead(void);
uint32_t cliWrite(uint8_t *p_data, uint32_t length);
#endif
void App_CLI_Initialization(void)
{
cliInit();
SW_Timer_Callback_Register(SW_TIMER_RUN_CONTINUE, 0, cliMain);
}
bool cliInit(void)
{
cli_node.is_open = true;
cli_node.is_log = true;
cli_node.state = CLI_RX_IDLE;
cli_node.hist_line_i = 0;
cli_node.hist_line_last = 0;
cli_node.hist_line_count = 0;
cli_node.hist_line_new = false;
cli_node.cmd_args.getData = cliArgsGetData;
cli_node.cmd_args.getFloat = cliArgsGetFloat;
cli_node.cmd_args.getStr = cliArgsGetStr;
cli_node.cmd_args.isStr = cliArgsIsStr;
cliLineClean(&cli_node);
cliAdd("help", cliShowList);
cliAdd("md" , cliMemoryDump);
return true;
}
#if 0
bool cliOpen(uint8_t ch, uint32_t baud)
{
cli_node.ch = ch;
cli_node.baud = baud;
cli_node.is_open = uartOpen(ch, baud);
return cli_node.is_open;
}
bool cliOpenLog(uint8_t ch, uint32_t baud)
{
bool ret;
cli_node.log_ch = ch;
cli_node.log_baud = baud;
ret = uartOpen(ch, baud);
if (ret == true)
{
cli_node.is_log = true;
}
return ret;
}
bool cliLogClose(void)
{
cli_node.is_log = false;
return true;
}
#endif
void cliShowLog(cli_t *p_cli)
{
if (cli_node.is_log == true)
{
uartPrintf(p_cli->log_ch, "Cursor : %d\r\n", p_cli->line.cursor);
uartPrintf(p_cli->log_ch, "Count : %d\r\n", p_cli->line.count);
uartPrintf(p_cli->log_ch, "buf_len : %d\r\n", p_cli->line.buf_len);
uartPrintf(p_cli->log_ch, "buf : %s\r\n", p_cli->line.buf);
uartPrintf(p_cli->log_ch, "line_i : %d\r\n", p_cli->hist_line_i);
uartPrintf(p_cli->log_ch, "line_lt : %d\r\n", p_cli->hist_line_last);
uartPrintf(p_cli->log_ch, "line_c : %d\r\n", p_cli->hist_line_count);
for (int i=0; i<p_cli->hist_line_count; i++)
{
uartPrintf(p_cli->log_ch, "buf %d : %s\r\n", i, p_cli->line_buf[i].buf);
}
uartPrintf(p_cli->log_ch, "\r\n");
}
}
void cliShowPrompt(cli_t *p_cli)
{
uartPrintf(p_cli->ch, "\n\r");
uartPrintf(p_cli->ch, CLI_PROMPT_STR);
}
void cliMain(void)
{
#if 0
if (cli_node.is_open != true)
{
return false;
}
#endif
#if 0
if(uartAvailable(cli_node.ch) > 0)
{
cliUpdate(&cli_node, uartRead(cli_node.ch));
}
return true;
#endif
uint8_t RxData;
if(App_Uart_Get_Recv_Data(&RxData) == true)
{
cliUpdate(&cli_node, RxData);
}
}
uint32_t cliAvailable(void)
{
#if 0
return uartAvailable(cli_node.ch);
#endif
return 0;
}
uint8_t cliRead(void)
{
#if 0
return uartRead(cli_node.ch);
#endif
return 0;
}
uint32_t cliWrite(uint8_t *p_data, uint32_t length)
{
#if 0
return uartWrite(cli_node.ch, p_data, length);
#endif
return 0;
}
bool cliUpdate(cli_t *p_cli, uint8_t rx_data)
{
bool ret = false;
uint8_t tx_buf[8];
cli_line_t *line;
line = &p_cli->line;
if (p_cli->state == CLI_RX_IDLE)
{
switch(rx_data)
{
// 엔터
//
case CLI_KEY_ENTER:
if (line->count > 0)
{
cliLineAdd(p_cli);
cliRunCmd(p_cli);
}
line->count = 0;
line->cursor = 0;
line->buf[0] = 0;
cliShowPrompt(p_cli);
break;
case CLI_KEY_ESC:
p_cli->state = CLI_RX_SP1;
break;
// DEL
//
case CLI_KEY_DEL:
if (line->cursor < line->count)
{
uint8_t mov_len;
mov_len = line->count - line->cursor;
for (int i=1; i<mov_len; i++)
{
line->buf[line->cursor + i - 1] = line->buf[line->cursor + i];
}
line->count--;
line->buf[line->count] = 0;
uartPrintf(p_cli->ch, "\x1B[1P");
}
break;
// 백스페이스
//
case CLI_KEY_BACK:
if (line->count > 0 && line->cursor > 0)
{
if (line->cursor == line->count)
{
line->count--;
line->buf[line->count] = 0;
}
if (line->cursor < line->count)
{
uint8_t mov_len;
mov_len = line->count - line->cursor;
for (int i=0; i<mov_len; i++)
{
line->buf[line->cursor + i - 1] = line->buf[line->cursor + i];
}
line->count--;
line->buf[line->count] = 0;
}
}
if (line->cursor > 0)
{
line->cursor--;
uartPrintf(p_cli->ch, "\b \b\x1B[1P");
}
break;
default:
if ((line->count + 1) < line->buf_len)
{
if (line->cursor == line->count)
{
uartWrite(p_cli->ch, &rx_data, 1);
line->buf[line->cursor] = rx_data;
line->count++;
line->cursor++;
line->buf[line->count] = 0;
}
if (line->cursor < line->count)
{
uint8_t mov_len;
mov_len = line->count - line->cursor;
for (int i=0; i<mov_len; i++)
{
line->buf[line->count - i] = line->buf[line->count - i - 1];
}
line->buf[line->cursor] = rx_data;
line->count++;
line->cursor++;
line->buf[line->count] = 0;
uartPrintf(p_cli->ch, "\x1B[4h%c\x1B[4l", rx_data);
}
}
break;
}
}
switch(p_cli->state)
{
case CLI_RX_SP1:
p_cli->state = CLI_RX_SP2;
break;
case CLI_RX_SP2:
p_cli->state = CLI_RX_SP3;
break;
case CLI_RX_SP3:
p_cli->state = CLI_RX_IDLE;
if (rx_data == CLI_KEY_LEFT)
{
if (line->cursor > 0)
{
line->cursor--;
tx_buf[0] = 0x1B;
tx_buf[1] = 0x5B;
tx_buf[2] = rx_data;
uartWrite(p_cli->ch, tx_buf, 3);
}
}
if (rx_data == CLI_KEY_RIGHT)
{
if (line->cursor < line->count)
{
line->cursor++;
tx_buf[0] = 0x1B;
tx_buf[1] = 0x5B;
tx_buf[2] = rx_data;
uartWrite(p_cli->ch, tx_buf, 3);
}
}
if (rx_data == CLI_KEY_UP)
{
cliLineChange(p_cli, true);
uartPrintf(p_cli->ch, (char *)p_cli->line.buf);
}
if (rx_data == CLI_KEY_DOWN)
{
cliLineChange(p_cli, false);
uartPrintf(p_cli->ch, (char *)p_cli->line.buf);
}
if (rx_data == CLI_KEY_HOME)
{
uartPrintf(p_cli->ch, "\x1B[%dD", line->cursor);
line->cursor = 0;
p_cli->state = CLI_RX_SP4;
}
if (rx_data == CLI_KEY_END)
{
uint16_t mov_len;
if (line->cursor < line->count)
{
mov_len = line->count - line->cursor;
uartPrintf(p_cli->ch, "\x1B[%dC", mov_len);
}
if (line->cursor > line->count)
{
mov_len = line->cursor - line->count;
uartPrintf(p_cli->ch, "\x1B[%dD", mov_len);
}
line->cursor = line->count;
p_cli->state = CLI_RX_SP4;
}
break;
case CLI_RX_SP4:
p_cli->state = CLI_RX_IDLE;
break;
}
cliShowLog(p_cli);
return ret;
}
void cliLineClean(cli_t *p_cli)
{
p_cli->line.count = 0;
p_cli->line.cursor = 0;
p_cli->line.buf_len = CLI_LINE_BUF_MAX - 1;
p_cli->line.buf[0] = 0;
}
void cliLineAdd(cli_t *p_cli)
{
p_cli->line_buf[p_cli->hist_line_last] = p_cli->line;
if (p_cli->hist_line_count < CLI_LINE_HIS_MAX)
{
p_cli->hist_line_count++;
}
p_cli->hist_line_i = p_cli->hist_line_last;
p_cli->hist_line_last = (p_cli->hist_line_last + 1) % CLI_LINE_HIS_MAX;
p_cli->hist_line_new = true;
}
void cliLineChange(cli_t *p_cli, int8_t key_up)
{
uint8_t change_i;
if (p_cli->hist_line_count == 0)
{
return;
}
if (p_cli->line.cursor > 0)
{
uartPrintf(p_cli->ch, "\x1B[%dD", p_cli->line.cursor);
}
if (p_cli->line.count > 0)
{
uartPrintf(p_cli->ch, "\x1B[%dP", p_cli->line.count);
}
if (key_up == true)
{
if (p_cli->hist_line_new == true)
{
p_cli->hist_line_i = p_cli->hist_line_last;
}
p_cli->hist_line_i = (p_cli->hist_line_i + p_cli->hist_line_count - 1) % p_cli->hist_line_count;
change_i = p_cli->hist_line_i;
}
else
{
p_cli->hist_line_i = (p_cli->hist_line_i + 1) % p_cli->hist_line_count;
change_i = p_cli->hist_line_i;
}
p_cli->line = p_cli->line_buf[change_i];
p_cli->line.cursor = p_cli->line.count;
p_cli->hist_line_new = false;
}
bool cliRunCmd(cli_t *p_cli)
{
bool ret = false;
if (cliParseArgs(p_cli) == true)
{
cliPrintf("\r\n");
cliToUpper(p_cli->argv[0]);
for (int i=0; i<p_cli->cmd_count; i++)
{
if (strcmp(p_cli->argv[0], p_cli->cmd_list[i].cmd_str) == 0)
{
p_cli->cmd_args.argc = p_cli->argc - 1;
p_cli->cmd_args.argv = &p_cli->argv[1];
p_cli->cmd_list[i].cmd_func(&p_cli->cmd_args);
break;
}
}
}
return ret;
}
bool cliParseArgs(cli_t *p_cli)
{
bool ret = false;
char *tok;
char *next_ptr;
uint16_t argc = 0;
static const char *delim = " \f\n\r\t\v";
char *cmdline;
char **argv;
p_cli->argc = 0;
cmdline = (char *)p_cli->line.buf;
argv = p_cli->argv;
argv[argc] = NULL;
for (tok = strtok_r(cmdline, delim, &next_ptr); tok; tok = strtok_r(NULL, delim, &next_ptr))
{
argv[argc++] = tok;
}
p_cli->argc = argc;
if (argc > 0)
{
ret = true;
}
return ret;
}
void cliPrintf(const char *fmt, ...)
{
va_list arg;
va_start (arg, fmt);
int32_t len;
cli_t *p_cli = &cli_node;
len = vsnprintf(p_cli->print_buffer, 256, fmt, arg);
va_end (arg);
uartWrite(p_cli->ch, (uint8_t *)p_cli->print_buffer, len);
}
void cliToUpper(char *str)
{
uint16_t i;
uint8_t str_ch;
for (i=0; i<CLI_CMD_NAME_MAX; i++)
{
str_ch = str[i];
if (str_ch == 0)
{
break;
}
if ((str_ch >= 'a') && (str_ch <= 'z'))
{
str_ch = str_ch - 'a' + 'A';
}
str[i] = str_ch;
}
if (i == CLI_CMD_NAME_MAX)
{
str[i-1] = 0;
}
}
int32_t cliArgsGetData(uint8_t index)
{
int32_t ret = 0;
cli_t *p_cli = &cli_node;
if (index >= p_cli->cmd_args.argc)
{
return 0;
}
ret = (int32_t)strtoul((const char * ) p_cli->cmd_args.argv[index], (char **)NULL, (int) 0);
return ret;
}
float cliArgsGetFloat(uint8_t index)
{
float ret = 0.0;
cli_t *p_cli = &cli_node;
if (index >= p_cli->cmd_args.argc)
{
return 0;
}
ret = (float)strtof((const char * ) p_cli->cmd_args.argv[index], (char **)NULL);
return ret;
}
char *cliArgsGetStr(uint8_t index)
{
char *ret = NULL;
cli_t *p_cli = &cli_node;
if (index >= p_cli->cmd_args.argc)
{
return 0;
}
ret = p_cli->cmd_args.argv[index];
return ret;
}
bool cliArgsIsStr(uint8_t index, char *p_str)
{
bool ret = false;
cli_t *p_cli = &cli_node;
if (index >= p_cli->cmd_args.argc)
{
return 0;
}
if(strcmp(p_str, p_cli->cmd_args.argv[index]) == 0)
{
ret = true;
}
return ret;
}
bool cliKeepLoop(void)
{
cli_t *p_cli = &cli_node;
#if 0
if (uartAvailable(p_cli->ch) == 0)
{
return true;
}
else
{
return false;
}
#endif
}
bool cliAdd(const char *cmd_str, void (*p_func)(cli_args_t *))
{
bool ret = true;
cli_t *p_cli = &cli_node;
uint16_t index;
if (p_cli->cmd_count >= CLI_CMD_LIST_MAX)
{
return false;
}
index = p_cli->cmd_count;
strcpy(p_cli->cmd_list[index].cmd_str, cmd_str);
p_cli->cmd_list[index].cmd_func = p_func;
cliToUpper(p_cli->cmd_list[index].cmd_str);
p_cli->cmd_count++;
return ret;
}
void cliShowList(cli_args_t *args)
{
cli_t *p_cli = &cli_node;
cliPrintf("\r\n");
cliPrintf("---------- cmd list ---------\r\n");
for (int i=0; i<p_cli->cmd_count; i++)
{
cliPrintf(p_cli->cmd_list[i].cmd_str);
cliPrintf("\r\n");
}
cliPrintf("-----------------------------\r\n");
}
void cliMemoryDump(cli_args_t *args)
{
int idx, size = 16;
unsigned int *addr;
int idx1, i;
unsigned int *ascptr;
unsigned char asc[4];
int argc = args->argc;
char **argv = args->argv;
if(args->argc < 1)
{
cliPrintf(">> md addr [size] \n");
return;
}
if(argc > 1)
{
size = (int)strtoul((const char * ) argv[1], (char **)NULL, (int) 0);
}
addr = (unsigned int *)strtoul((const char * ) argv[0], (char **)NULL, (int) 0);
ascptr = (unsigned int *)addr;
cliPrintf("\n ");
for (idx = 0; idx<size; idx++)
{
if((idx%4) == 0)
{
cliPrintf(" 0x%08X: ", (unsigned int)addr);
}
cliPrintf(" 0x%08X", *(addr));
if ((idx%4) == 3)
{
cliPrintf (" |");
for (idx1= 0; idx1< 4; idx1++)
{
memcpy((char *)asc, (char *)ascptr, 4);
for (i=0;i<4;i++)
{
if (asc[i] > 0x1f && asc[i] < 0x7f)
{
cliPrintf("%c", asc[i]);
}
else
{
cliPrintf(".");
}
}
ascptr+=1;
}
cliPrintf("|\r\n ");
}
addr++;
}
}
static void uartPrintf(uint8_t ch, const char *format, ...)
{
char buf[256];
va_list args;
int len;
uint32_t ret;
va_start(args, format);
len = vsnprintf(buf, 256, format, args);
ret = uartWrite(ch, (uint8_t *)buf, len);
va_end(args);
}
static uint32_t uartWrite(uint8_t ch, uint8_t* pTxData, uint32_t txLen)
{
App_Uart_Transmit_Len(pTxData, txLen);
return 0;
}

@ -0,0 +1,44 @@
/** \file app_cli.h */
#if !defined(APP_CLI_H__9DA8C2E3_EABE_4275_933C_0028C1AD1C5F__INCLUDED_)
#define APP_CLI_H__9DA8C2E3_EABE_4275_933C_0028C1AD1C5F__INCLUDED_
#include "board_config.h"
#define CLI_CMD_LIST_MAX 16
#define CLI_CMD_NAME_MAX 16
#define CLI_LINE_HIS_MAX 4
#define CLI_LINE_BUF_MAX 64
typedef struct
{
uint16_t argc;
char **argv;
int32_t (*getData)(uint8_t index);
float (*getFloat)(uint8_t index);
char *(*getStr)(uint8_t index);
bool (*isStr)(uint8_t index, char *p_str);
} cli_args_t;
void App_CLI_Initialization(void);
bool cliAdd(const char *cmd_str, void (*p_func)(cli_args_t *));
#if 0
bool cliInit(void);
bool cliOpen(uint8_t ch, uint32_t baud);
bool cliOpenLog(uint8_t ch, uint32_t baud);
bool cliMain(void);
void cliPrintf(const char *fmt, ...);
bool cliKeepLoop(void);
uint32_t cliAvailable(void);
uint8_t cliRead(void);
uint32_t cliWrite(uint8_t *p_data, uint32_t length);
#endif
#endif

@ -2,7 +2,7 @@
#define APP_GPIO_I2C_SDA_PORT PORT_0 #define APP_GPIO_I2C_SDA_PORT PORT_0
#define APP_GPIO_I2C_SDA_PIN PIN_9 #define APP_GPIO_I2C_SDA_PIN PIN_3
#define APP_GPIO_I2C_SDA_OUTPUT App_Gpio_I2C_Port_Output(APP_GPIO_I2C_SDA_PORT, APP_GPIO_I2C_SDA_PIN) #define APP_GPIO_I2C_SDA_OUTPUT App_Gpio_I2C_Port_Output(APP_GPIO_I2C_SDA_PORT, APP_GPIO_I2C_SDA_PIN)
#define APP_GPIO_I2C_SDA_INPUT App_Gpio_I2C_Port_Input(APP_GPIO_I2C_SDA_PORT, APP_GPIO_I2C_SDA_PIN) #define APP_GPIO_I2C_SDA_INPUT App_Gpio_I2C_Port_Input(APP_GPIO_I2C_SDA_PORT, APP_GPIO_I2C_SDA_PIN)
#define APP_GPIO_I2C_SDA_H App_Gpio_I2C_Port_H(APP_GPIO_I2C_SDA_PORT, APP_GPIO_I2C_SDA_PIN) #define APP_GPIO_I2C_SDA_H App_Gpio_I2C_Port_H(APP_GPIO_I2C_SDA_PORT, APP_GPIO_I2C_SDA_PIN)
@ -10,7 +10,7 @@
#define APP_GPIO_I2C_READ App_Gpio_I2C_Port_Read(APP_GPIO_I2C_SDA_PORT, APP_GPIO_I2C_SDA_PIN) #define APP_GPIO_I2C_READ App_Gpio_I2C_Port_Read(APP_GPIO_I2C_SDA_PORT, APP_GPIO_I2C_SDA_PIN)
#define APP_GPIO_I2C_SCL_PORT PORT_0 #define APP_GPIO_I2C_SCL_PORT PORT_0
#define APP_GPIO_I2C_SCL_PIN PIN_8 #define APP_GPIO_I2C_SCL_PIN PIN_2
#define APP_GPIO_I2C_SCL_H App_Gpio_I2C_Port_H(APP_GPIO_I2C_SCL_PORT, APP_GPIO_I2C_SCL_PIN) #define APP_GPIO_I2C_SCL_H App_Gpio_I2C_Port_H(APP_GPIO_I2C_SCL_PORT, APP_GPIO_I2C_SCL_PIN)
#define APP_GPIO_I2C_SCL_L App_Gpio_I2C_Port_L(APP_GPIO_I2C_SCL_PORT, APP_GPIO_I2C_SCL_PIN) #define APP_GPIO_I2C_SCL_L App_Gpio_I2C_Port_L(APP_GPIO_I2C_SCL_PORT, APP_GPIO_I2C_SCL_PIN)
@ -38,7 +38,7 @@ void App_Gpio_I2C_Initialization(uint32_t Frequency)
APP_GPIO_I2C_SDA_H; APP_GPIO_I2C_SDA_H;
APP_GPIO_I2C_SCL_H; APP_GPIO_I2C_SCL_H;
DelayCount = (1000000 / Frequency) + 1; DelayCount = (1000000 / Frequency)/2;
App_Gpio_I2C_Stop(); App_Gpio_I2C_Stop();
} }
@ -246,8 +246,12 @@ static bool App_Gpio_I2C_Port_Read(uint32_t Port, uint32_t Pin)
static void App_Gpio_I2C_Delay(void) static void App_Gpio_I2C_Delay(void)
{ {
uint32_t i; uint32_t i;
for(i = 0 ; i < DelayCount ; i++) for(i = 0 ; i < DelayCount ; i++)
{
asm("NOP"); asm("NOP");
}
} }

@ -4,6 +4,11 @@
#include "board_config.h" #include "board_config.h"
void App_Gpio_I2C_Initialization(uint32_t Frequency); void App_Gpio_I2C_Initialization(uint32_t Frequency);
void App_Gpio_I2C_Start(void); void App_Gpio_I2C_Start(void);
bool App_Gpio_I2C_WriteData(uint8_t TxData); bool App_Gpio_I2C_WriteData(uint8_t TxData);

@ -0,0 +1,163 @@
#include "app_i2c0.h"
#define I2C0_INSTANCE MXC_I2C0
sys_cfg_i2c_t sys_i2c_cfg = NULL;
bool I2C0_Master_Initialization(i2c_speed_t Speed)
{
int error;
I2C_Shutdown(I2C0_INSTANCE);
error = I2C_Init(I2C0_INSTANCE, Speed, &sys_i2c_cfg);
I2C_SetTimeout(I2C0_INSTANCE, 100);
NVIC_ClearPendingIRQ(I2C0_IRQn);
NVIC_DisableIRQ(I2C0_IRQn);
NVIC_EnableIRQ(I2C0_IRQn);
return ((error == E_NO_ERROR) ? true : false);
}
#if 0
static i2c_req_t I2C0_Master_Req;
static int32_t I2C0_MasterError;
static bool isRecvComplete;
static uint32_t I2C0_MasterTickCount;
static void I2C_Master_Callback(i2c_req_t *req, int error);
static uint8_t I2C_Master_TxBuff[256];
static uint8_t I2C_Master_RxBuff[256];
void I2C_Master_Initialization(void)
{
int error;
const sys_cfg_i2c_t sys_i2c_master_cfg = NULL; /* No system specific configuration needed. */
I2C_Shutdown(I2C_MASTER_INSTANCE);
error = I2C_Init(I2C_MASTER_INSTANCE, I2C_MASTER_FREQUENCY, &sys_i2c_master_cfg);
I2C_SetTimeout(I2C_MASTER_INSTANCE, 100);
if(I2C_MASTER_INSTANCE == MXC_I2C0)
{
NVIC_ClearPendingIRQ(I2C0_IRQn);
NVIC_DisableIRQ(I2C0_IRQn);
NVIC_EnableIRQ(I2C0_IRQn);
}
else if(I2C_MASTER_INSTANCE == MXC_I2C1)
{
NVIC_ClearPendingIRQ(I2C1_IRQn);
NVIC_DisableIRQ(I2C1_IRQn);
NVIC_EnableIRQ(I2C1_IRQn);
}
}
//Master interrupt handler
void I2C0_IRQHandler(void)
{
I2C_Handler(I2C_MASTER_INSTANCE);
return;
}
static void I2C_Master_Callback(i2c_req_t *req, int error)
{
I2C_MasterError = error;
isRecvComplete = true;
}
int32_t I2C_Write(uint8_t SlaveAddress, uint8_t* pTxBuffer, uint32_t TxLen)
{
int32_t ret;
ret = I2C_MasterWrite(I2C_MASTER_INSTANCE, (SlaveAddress << 1), pTxBuffer, TxLen, 0);
if(ret != TxLen)
{
I2C_Master_Initialization();
ret = E_COMM_ERR;
}
else
{
ret = E_NO_ERROR;
}
return ret;
}
int32_t I2C_Read(uint8_t SlaveAddress, uint8_t ReadRegAddress, uint8_t* pRxBuffer, uint32_t RxLen)
{
int32_t ret;
if(ret = I2C_MasterWrite(I2C_MASTER_INSTANCE, (SlaveAddress << 1), &ReadRegAddress, 1, true) != 1)
{
I2C_Master_Initialization();
return E_COMM_ERR;
}
if(ret = I2C_MasterRead(I2C_MASTER_INSTANCE, (SlaveAddress << 1), &pRxBuffer[0], RxLen, false) != RxLen)
{
I2C_Master_Initialization();
return E_COMM_ERR;
}
return E_NO_ERROR;
}
int32_t I2C_WriteRead(uint8_t SlaveAddress, uint8_t* pWriteBuff, uint32_t TxLen, uint8_t* pRxBuffer, uint32_t RxLen)
{
int32_t ret;
if(ret = I2C_MasterWrite(I2C_MASTER_INSTANCE, (SlaveAddress << 1), &pWriteBuff[0], TxLen, true) != TxLen)
{
I2C_Master_Initialization();
return E_COMM_ERR;
}
if(ret = I2C_MasterRead(I2C_MASTER_INSTANCE, (SlaveAddress << 1), &pRxBuffer[0], RxLen, false) != RxLen)
{
I2C_Master_Initialization();
return E_COMM_ERR;
}
return E_NO_ERROR;
}
void I2C_Scanner_Process(void)
{
uint8_t regAddress = 0x00;
uint8_t regRxdata;
for(uint8_t address = 1; address < 127; address++)
{
dbg_printf(".");
if(I2C_Read(address, regAddress, &regRxdata, 1) == E_NO_ERROR)
{
dbg_printf("\r\nFound slave ID %03d; 0x%02X\r\n", address, address);
//break;
}
Delay_ms(5);
}
dbg_printf("\r\n");
dbg_printf("scan complete\r\n");
}
#endif

@ -0,0 +1,10 @@
/** \file app_i2c0.h */
#if !defined(APP_I2C0_H__B26936C0_09E7_410C_A4ED_75481D0FE5F0__INCLUDED_)
#define APP_I2C0_H__B26936C0_09E7_410C_A4ED_75481D0FE5F0__INCLUDED_
#include "board_config.h"
bool I2C0_Master_Initialization(i2c_speed_t Speed);
#endif

@ -0,0 +1 @@
#include "app_i2c1.h"

@ -0,0 +1,8 @@
/** \file app_i2c1.h */
#if !defined(APP_I2C1_H__B26936C0_09E7_410C_A4ED_75481D0FE5F0__INCLUDED_)
#define APP_I2C1_H__B26936C0_09E7_410C_A4ED_75481D0FE5F0__INCLUDED_
#include "board_config.h"
#endif

@ -0,0 +1,39 @@
#include "app_log.h"
#include <stdarg.h>
static LOG_LEVEL nowLogLevel = LOG_LEVEL_DEBUG;
bool App_Log_Initialization(LOG_LEVEL level)
{
return App_Log_Set_logLevel(level);
}
bool App_Log_Set_logLevel(LOG_LEVEL level)
{
if(level > LOG_LEVEL_DEBUG)
return false;
nowLogLevel = level;
return true;
}
LOG_LEVEL App_Lgo_Get_logLevel(void)
{
return nowLogLevel;
}
void App_Log_Prinf(LOG_LEVEL level, const char *func, const char *format, ...)
{
if(nowLogLevel >= level)
{
va_list arg;
fprintf(stderr, "[%d][%s] ", millis(), func);
va_start(arg, format);
vfprintf(stderr, format, arg);
va_end(arg);
}
}

@ -0,0 +1,35 @@
/** \file app_log.h */
#if !defined(APP_LOG_H__AF0528EC_4FE9_42EF_A325_9764C6E25718__INCLUDED_)
#define APP_LOG_H__AF0528EC_4FE9_42EF_A325_9764C6E25718__INCLUDED_
#include "board_config.h"
typedef enum
{
LOG_LEVEL_NONE,
LOG_LEVEL_ERROR,
LOG_LEVEL_WARRING,
LOG_LEVEL_INFO,
LOG_LEVEL_DEBUG,
}LOG_LEVEL;
#ifdef DEBUG
#define dbg_printf(l, f, a...) \
do { \
App_Log_Prinf(l, __FUNCTION__, f, ## a); \
} while(0)
#else
#define Log(l, f, a ...) do {} while(0)
#endif
bool App_Log_Initialization(LOG_LEVEL level);
bool App_Log_Set_logLevel(LOG_LEVEL level);
LOG_LEVEL App_Lgo_Get_logLevel(void);
void App_Log_Prinf(LOG_LEVEL level, const char *func, const char *format, ...);
#endif

@ -110,8 +110,7 @@ void App_Uart_Interrupt_Handler(void)
static void App_Uart_Read_Callback(uart_req_t* req, int error) static void App_Uart_Read_Callback(uart_req_t* req, int error)
{ {
RingBuffer_Enqueue(&Rx_RingBuffer, RxData); RingBuffer_Enqueue(&Rx_RingBuffer, RxData);
RingBuffer_Enqueue(&Tx_RingBuffer, RxData);
App_Uart_Read_Callback_Initialization(); App_Uart_Read_Callback_Initialization();
} }
@ -133,6 +132,25 @@ int32_t App_Uart_Transmit(uint8_t TxData)
return true; return true;
} }
int32_t App_Uart_Transmit_Len(uint8_t* pTxBuffer, uint16_t TxLen)
{
uint32_t i;
for(i = 0 ; i < TxLen ; i++)
App_Uart_Transmit(pTxBuffer[i]);
return true;
}
int32_t App_Uart_Print(uint8_t* pTxBuffer)
{
uint32_t index = 0;
while(pTxBuffer[index] != NULL)
{
App_Uart_Transmit(pTxBuffer[index]);
index++;
}
}
int32_t App_Uart_Get_Last_Error(void) int32_t App_Uart_Get_Last_Error(void)
{ {
return UartError; return UartError;

@ -8,6 +8,7 @@
int32_t App_Uart_Initialization(void); int32_t App_Uart_Initialization(void);
int32_t App_Uart_Transmit(uint8_t TxData); int32_t App_Uart_Transmit(uint8_t TxData);
int32_t App_Uart_Transmit_Len(uint8_t* pTxBuffer, uint16_t TxLen); int32_t App_Uart_Transmit_Len(uint8_t* pTxBuffer, uint16_t TxLen);
int32_t App_Uart_Print(uint8_t* pTxBuffer);
int32_t App_Uart_Get_Last_Error(void); int32_t App_Uart_Get_Last_Error(void);
bool App_Uart_Get_Recv_Data(uint8_t* pRxData); bool App_Uart_Get_Recv_Data(uint8_t* pRxData);

@ -10,7 +10,7 @@
#include <math.h> #include <math.h>
#include <stdbool.h> #include <stdbool.h>
#include <assert.h> #include <assert.h>
#include <stdarg.h>
#include "max32660.h" #include "max32660.h"
@ -33,7 +33,7 @@
#include "system_func.h" #include "system_func.h"
#define DEBUG
#define millis() SystemTimer_Get_TickCount() #define millis() SystemTimer_Get_TickCount()
@ -43,11 +43,17 @@
////////////////////////////////////////// //////////////////////////////////////////
// printf use // printf use
// //
#define APP_UART_INSTANCE MXC_UART1 #define APP_UART_INSTANCE MXC_UART1
#define APP_UART_ALTERNATE MAP_A #define APP_UART_ALTERNATE MAP_A
#define APP_UART_BUADRATE 115200 #define APP_UART_BUADRATE 115200
#define APP_UART_TX_BUFFER_SIZE 512 #define APP_UART_TX_BUFFER_SIZE 1024
#define APP_UART_RX_BUFFER_SIZE 128 #define APP_UART_RX_BUFFER_SIZE 128
#define TEMPERATURE_MAX 4500
#define TEMPERATURE_MIN 1000
#endif #endif

@ -6,41 +6,50 @@
#include "app_gpio_led.h" #include "app_gpio_led.h"
#include "app_gpio_i2c.h" #include "app_gpio_i2c.h"
#include "app_uart.h" #include "app_uart.h"
#include "app_i2c0.h"
#include "ssd1306.h" #include "ssd1306.h"
#include "app_log.h"
#include "app_cli.h"
void Test_Process(void) void Test_Process(void)
{ {
static uint32_t count = 0;
uint8_t temp[100];
SSD1306_SetPosition (7, 1); // set position
sprintf(temp, "count = %d", count++);
SSD1306_DrawString (temp); // draw string
SSD1306_UpdateScreen (SSD1306_ADDR); // update
//printf("12345678\r\n");
} }
#if 0
void App_Gpio_I2C_Initialization(uint32_t Frequency);
void App_Gpio_I2C_Start(void);
bool App_Gpio_I2C_WriteData(uint8_t TxData);
bool App_Gpio_I2C_ReadData(uint8_t* pRxData, bool isAck);
void App_Gpio_I2C_Stop(void);
bool App_Gpio_I2C_Write(uint8_t Address, uint8_t* pWriteData, uint32_t TxSize);
bool App_Gpio_I2C_Read(uint8_t Address, uint8_t* pReadData, uint32_t RxSize);
#endif
int main(void) int main(void)
{ {
uint8_t i; uint8_t i;
bool isAck;
ICC_Enable(); ICC_Enable();
SystemCoreClockSet(HIRC_96MHZ); SystemCoreClockSet(HIRC_96MHZ);
App_Uart_Initialization(); App_Uart_Initialization();
App_Gpio_I2C_Initialization(200000); App_Gpio_I2C_Initialization(100000);
I2C0_Master_Initialization(I2C_FAST_MODE);
App_Led_Initialization(); App_Led_Initialization();
App_CLI_Initialization();
__enable_irq(); __enable_irq();
App_Led_OutputSet(APP_LED_1, APP_LED_MODE_TOGGLE, 100, 100); App_Led_OutputSet(APP_LED_1, APP_LED_MODE_TOGGLE, 100, 100);
SW_Timer_Callback_Register(SW_TIMER_RUN_CONTINUE, 100,Test_Process ); SW_Timer_Callback_Register(SW_TIMER_RUN_CONTINUE, 1000,Test_Process );
#if 0
if(SSD1306_Init(SSD1306_ADDR) != SSD1306_SUCCESS) if(SSD1306_Init(SSD1306_ADDR) != SSD1306_SUCCESS)
{ {
@ -48,8 +57,40 @@ int main(void)
} }
else else
{ {
uint8_t i;
SSD1306_NormalScreen (SSD1306_ADDR);
SSD1306_ClearScreen ();
SSD1306_DrawBackGround_Log();
SSD1306_UpdateScreen (SSD1306_ADDR);
Delay_ms(1500);
SSD1306_InverseScreen (SSD1306_ADDR);
Delay_ms(1500);
SSD1306_NormalScreen (SSD1306_ADDR);
for(i = 0 ; i < 128 ; i++)
{
SSD1306_DrawBackGround_LeftShift(1);
if(i % 2 == 0)
{
SSD1306_UpdateScreen (SSD1306_ADDR);
}
//Delay_ms(10);
}
SSD1306_DrawBackGround();
SSD1306_UpdateScreen (SSD1306_ADDR);
#if 0
SSD1306_NormalScreen (SSD1306_ADDR); SSD1306_NormalScreen (SSD1306_ADDR);
SSD1306_ClearScreen (); // clear screen SSD1306_ClearScreen (); // clear screen
SSD1306_DrawLine (0, MAX_X, 4, 4); // draw line SSD1306_DrawLine (0, MAX_X, 4, 4); // draw line
SSD1306_SetPosition (7, 1); // set position SSD1306_SetPosition (7, 1); // set position
SSD1306_DrawString ("SSD1306 OLED DRIVER"); // draw string SSD1306_DrawString ("SSD1306 OLED DRIVER"); // draw string
@ -83,7 +124,12 @@ int main(void)
SSD1306_NormalScreen (SSD1306_ADDR); SSD1306_NormalScreen (SSD1306_ADDR);
#endif #endif
#endif
} }
#endif
COMPLETE:
while(1) while(1)
{ {
SW_Timer_Callback_Process(); SW_Timer_Callback_Process();

@ -3,6 +3,11 @@
//#include "font8x8.h" //#include "font8x8.h"
#include "ssd1306_i2c.h" #include "ssd1306_i2c.h"
extern const unsigned char gImage_background[512];
extern const unsigned char gImage_CAMMSYS_Log[512];
extern const unsigned char gImage_number[12][88];
// @const List of init commands with arguments by Adafruit // @const List of init commands with arguments by Adafruit
// @link https://github.com/adafruit/Adafruit_SSD1306 // @link https://github.com/adafruit/Adafruit_SSD1306
@ -36,7 +41,8 @@ const uint8_t INIT_SSD1306_ADAFRUIT[] = {
// @const uint8_t - List of init commands according to datasheet SSD1306 // @const uint8_t - List of init commands according to datasheet SSD1306
const uint8_t INIT_SSD1306[] = { const uint8_t INIT_SSD1306[] = {
17, // number of initializers 18, // number of initializers
0xE4,0,
SSD1306_DISPLAY_OFF, 0, // 0xAE = Set Display OFF SSD1306_DISPLAY_OFF, 0, // 0xAE = Set Display OFF
SSD1306_SET_MUX_RATIO, 1, 0x1F, // 0xA8 - 0x3F for 128 x 64 version (64MUX) SSD1306_SET_MUX_RATIO, 1, 0x1F, // 0xA8 - 0x3F for 128 x 64 version (64MUX)
// - 0x1F for 128 x 32 version (32MUX) // - 0x1F for 128 x 32 version (32MUX)
@ -65,7 +71,12 @@ const uint8_t INIT_SSD1306[] = {
unsigned int _counter; unsigned int _counter;
// @var array Chache memory Lcd 8 * 128 = 1024 // @var array Chache memory Lcd 8 * 128 = 1024
static char cacheMemLcd[CACHE_SIZE_MEM]; static uint8_t cacheMemLcd[CACHE_SIZE_MEM];
static uint8_t reverse_bits(uint8_t num);
/** /**
* +------------------------------------------------------------------------------------+ * +------------------------------------------------------------------------------------+
@ -257,18 +268,21 @@ uint8_t SSD1306_InverseScreen (uint8_t address)
return SSD1306_SUCCESS; return SSD1306_SUCCESS;
} }
/**
* @brief SSD1306 Update screen
*
* @param uint8_t address
*
* @return uint8_t
*/
uint8_t SSD1306_UpdateScreen (uint8_t address) uint8_t SSD1306_UpdateScreen (uint8_t address)
{ {
uint8_t status = INIT_STATUS; uint8_t status = INIT_STATUS;
uint16_t i = 0; uint16_t i = 0;
SSD1306_Send_StartAndSLAW (address);
status = SSD1306_Send_Command (0xB0);
status = SSD1306_Send_Command (SSD1306_SET_PAGE_ADDR); // argument
status = SSD1306_Send_Command (0x00); // argument
status = SSD1306_Send_Command (0x03); // argument
TWI_Stop ();
// TWI: start & SLAW // TWI: start & SLAW
// ------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------
@ -289,7 +303,7 @@ uint8_t SSD1306_UpdateScreen (uint8_t address)
// send cache memory lcd // send cache memory lcd
// ------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------
while (i < CACHE_SIZE_MEM) { while (i < CACHE_SIZE_MEM) {
status = TWI_MT_Send_Data (cacheMemLcd[i++]); // send data status = TWI_MT_Send_Data (reverse_bits(cacheMemLcd[i++])); // send data
if (SSD1306_SUCCESS != status) if (SSD1306_SUCCESS != status)
{ {
TWI_Stop(); TWI_Stop();
@ -314,6 +328,8 @@ uint8_t SSD1306_UpdateScreen (uint8_t address)
void SSD1306_ClearScreen (void) void SSD1306_ClearScreen (void)
{ {
memset (cacheMemLcd, 0x00, CACHE_SIZE_MEM); // null cache memory lcd memset (cacheMemLcd, 0x00, CACHE_SIZE_MEM); // null cache memory lcd
//SSD1306_DrawBackGround();
//SSD1306_DrawBackGround_Log();
} }
/** /**
@ -369,7 +385,7 @@ uint8_t SSD1306_DrawChar (char character)
return SSD1306_ERROR; return SSD1306_ERROR;
} }
while (i < CHARS_COLS_LENGTH) { while (i < CHARS_COLS_LENGTH) {
cacheMemLcd[_counter++] = FONTS[character-32][i++]; cacheMemLcd[_counter++] = reverse_bits(FONTS[character-32][i++]);
} }
_counter++; _counter++;
@ -478,6 +494,115 @@ uint8_t SSD1306_DrawLine (uint8_t x1, uint8_t x2, uint8_t y1, uint8_t y2)
} }
uint8_t SSD1306_DrawBackGround(void)
{
memcpy(cacheMemLcd, gImage_background, CACHE_SIZE_MEM); // null cache memory lcd
return SSD1306_SUCCESS;
}
uint8_t SSD1306_DrawBackGround_Log(void)
{
memcpy(cacheMemLcd, gImage_CAMMSYS_Log, CACHE_SIZE_MEM); // null cache memory lcd
return SSD1306_SUCCESS;
}
uint8_t SSD1306_DrawBackGround_LeftShift(uint8_t Shift)
{
uint8_t x, y;
uint32_t Index;
for(y = 0 ; y <= END_PAGE_ADDR ; y++)
{
for(x = 0 ; x < (MAX_X+1) ; x++)
{
Index = (y* MAX_X) + x;
cacheMemLcd[Index] = cacheMemLcd[Index+Shift];
cacheMemLcd[Index+Shift] = 0;
}
}
cacheMemLcd[127] = 0;
cacheMemLcd[255] = 0;
cacheMemLcd[383] = 0;
cacheMemLcd[511] = 0;
return SSD1306_SUCCESS;
}
#define DRAW_NUM_WIDTH 22
#define DRAW_NUM_H_H_X 2
#define DRAW_NUM_H_H_L 24
#define DRAW_NUM_L_H_X 53
#define DRAW_NUM_L_H_L 75
uint8_t SSD1306_Draw_Temperature(uint16_t Temperature)
{
uint8_t Index_HH;
uint8_t Index_HL;
uint8_t Index_LH;
uint8_t Index_LL;
uint8_t Temp_H;
uint8_t Temp_L;
uint8_t x;
if(Temperature > TEMPERATURE_MAX || Temperature < TEMPERATURE_MIN)
{
Index_HH = 11;
Index_HL = 11;
Index_LH = 11;
Index_LL = 11;
}
else
{
Temp_H = Temperature / 100;
Index_HH = Temp_H / 10;
if(Index_HH == 0)
Index_HH = 10;
Index_HL = Temp_H % 10;
Temp_L = Temperature % 100;
Index_LH = Temp_L / 10;
Index_LL = Temp_L % 10;
}
for(x = 0 ; x < DRAW_NUM_WIDTH ; x++)
{
cacheMemLcd[DRAW_NUM_H_H_X+x] = gImage_number[Index_HH][x];
cacheMemLcd[DRAW_NUM_H_H_X+128+x] = gImage_number[Index_HH][22+x];
cacheMemLcd[DRAW_NUM_H_H_X+(128*2)+x] = gImage_number[Index_HH][44+x];
cacheMemLcd[DRAW_NUM_H_H_X+(128*3)+x] = gImage_number[Index_HH][66+x];
cacheMemLcd[DRAW_NUM_H_H_L+x] = gImage_number[Index_HL][x];
cacheMemLcd[DRAW_NUM_H_H_L+128+x] = gImage_number[Index_HL][22+x];
cacheMemLcd[DRAW_NUM_H_H_L+(128*2)+x] = gImage_number[Index_HL][44+x];
cacheMemLcd[DRAW_NUM_H_H_L+(128*3)+x] = gImage_number[Index_HL][66+x];
cacheMemLcd[DRAW_NUM_L_H_X+x] = gImage_number[Index_LH][x];
cacheMemLcd[DRAW_NUM_L_H_X+128+x] = gImage_number[Index_LH][22+x];
cacheMemLcd[DRAW_NUM_L_H_X+(128*2)+x] = gImage_number[Index_LH][44+x];
cacheMemLcd[DRAW_NUM_L_H_X+(128*3)+x] = gImage_number[Index_LH][66+x];
cacheMemLcd[DRAW_NUM_L_H_L+x] = gImage_number[Index_LL][x];
cacheMemLcd[DRAW_NUM_L_H_L+128+x] = gImage_number[Index_LL][22+x];
cacheMemLcd[DRAW_NUM_L_H_L+(128*2)+x] = gImage_number[Index_LL][44+x];
cacheMemLcd[DRAW_NUM_L_H_L+(128*3)+x] = gImage_number[Index_LL][66+x];
}
return SSD1306_SUCCESS;
}
static uint8_t reverse_bits(uint8_t num)
{
uint8_t reversed = 0;
for (int i = 0; i < 8; i++) {
reversed |= ((num >> i) & 1) << (7 - i);
}
return reversed;
}
#if 0 #if 0
const uint8_t BasicFont[][8] = { const uint8_t BasicFont[][8] = {

@ -87,31 +87,8 @@ extern unsigned int _counter;
* --------------------------------------------------------------------------------------------+ * --------------------------------------------------------------------------------------------+
*/ */
/**
* @brief SSD1306 Init
*
* @param uint8_t
*
* @return uint8_t
*/
uint8_t SSD1306_Init (uint8_t); uint8_t SSD1306_Init (uint8_t);
/**
* @brief SSD1306 Send Start and SLAW request
*
* @param uint8_t
*
* @return uint8_t
*/
uint8_t SSD1306_Send_StartAndSLAW (uint8_t); uint8_t SSD1306_Send_StartAndSLAW (uint8_t);
/**
* @brief SSD1306 Send command
*
* @param uint8_t
*
* @return uint8_t
*/
uint8_t SSD1306_Send_Command (uint8_t); uint8_t SSD1306_Send_Command (uint8_t);
/** /**
@ -120,104 +97,21 @@ uint8_t SSD1306_Send_Command (uint8_t);
* +------------------------------------------------------------------------------------+ * +------------------------------------------------------------------------------------+
*/ */
/**
* @brief SSD1306 Clear screen
*
* @param void
*
* @return void
*/
void SSD1306_ClearScreen (void); void SSD1306_ClearScreen (void);
/**
* @brief SSD1306 Normal colors
*
* @param uint8_t
*
* @return uint8_t
*/
uint8_t SSD1306_NormalScreen (uint8_t); uint8_t SSD1306_NormalScreen (uint8_t);
/**
* @brief SSD1306 Inverse colors
*
* @param uint8_t
*
* @return uint8_t
*/
uint8_t SSD1306_InverseScreen (uint8_t); uint8_t SSD1306_InverseScreen (uint8_t);
uint8_t SSD1306_UpdateScreen_Temp (uint8_t address);
/**
* @brief SSD1306 Update screen
*
* @param uint8_t
*
* @return uint8_t
*/
uint8_t SSD1306_UpdateScreen (uint8_t); uint8_t SSD1306_UpdateScreen (uint8_t);
/**
* @brief SSD1306 Update text position
*
* @param void
*
* @return uint8_t
*/
uint8_t SSD1306_UpdatePosition (void); uint8_t SSD1306_UpdatePosition (void);
/**
* @brief SSD1306 Set position
*
* @param uint8_t
* @param uint8_t
*
* @return void
*/
void SSD1306_SetPosition (uint8_t, uint8_t); void SSD1306_SetPosition (uint8_t, uint8_t);
/**
* @brief SSD1306 Draw character
*
* @param char
*
* @return uint8_t
*/
uint8_t SSD1306_DrawChar (char); uint8_t SSD1306_DrawChar (char);
/**
* @brief SSD1306 Draw string
*
* @param char *
*
* @return void
*/
void SSD1306_DrawString (char *); void SSD1306_DrawString (char *);
/**
* @brief Draw pixel
*
* @param uint8_t
* @param uint8_t
*
* @return uint8_t
*/
uint8_t SSD1306_DrawPixel (uint8_t, uint8_t); uint8_t SSD1306_DrawPixel (uint8_t, uint8_t);
/**
* @brief Draw line
*
* @param uint8_t
* @param uint8_t
* @param uint8_t
* @param uint8_t
*
* @return uint8_t
*/
uint8_t SSD1306_DrawLine (uint8_t, uint8_t, uint8_t, uint8_t); uint8_t SSD1306_DrawLine (uint8_t, uint8_t, uint8_t, uint8_t);
uint8_t SSD1306_DrawBackGround(void);
uint8_t SSD1306_DrawBackGround_Log(void);
uint8_t SSD1306_DrawBackGround_LeftShift(uint8_t Shift);
uint8_t SSD1306_Draw_Temperature(uint16_t Temperature);

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 574 B

@ -0,0 +1,34 @@
const unsigned char gImage_CAMMSYS_Log[512] = {
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X1F,0X1F,0X3F,0X30,0X30,0X30,0X30,0X30,0X30,0X30,0X30,0X30,0X30,0X00,
0X00,0X00,0X00,0X00,0X00,0X01,0X07,0X0E,0X1C,0X38,0X1C,0X0E,0X07,0X01,0X00,0X00,
0X00,0X00,0X00,0X3F,0X3F,0X1C,0X0E,0X07,0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X01,0X07,0X0E,0X1C,0X3F,0X3F,0X00,0X00,0X3F,0X3F,0X1C,0X0E,0X07,0X01,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X01,0X07,0X0E,0X1C,0X3F,0X3F,0X00,0X00,0X1F,0X1F,0X3F,
0X31,0X31,0X31,0X31,0X31,0X31,0X31,0X31,0X31,0X31,0X31,0X00,0X00,0X00,0X30,0X38,
0X1C,0X0E,0X07,0X03,0X01,0X01,0X01,0X03,0X07,0X0E,0X1C,0X38,0X30,0X00,0X00,0X1F,
0X1F,0X3F,0X31,0X31,0X31,0X31,0X31,0X31,0X31,0X31,0X31,0X31,0X31,0X00,0X00,0X00,
0X00,0X00,0XF8,0XFC,0XFC,0X0C,0X0C,0X0C,0X0C,0X0C,0X0C,0X0C,0X0C,0X0C,0X0C,0X00,
0X00,0X0C,0X1C,0X38,0XF0,0XC0,0X80,0X00,0X00,0X00,0X00,0X00,0X80,0XC0,0XF0,0X38,
0X1C,0X0C,0X00,0XFC,0XFC,0X00,0X00,0X80,0XC0,0XF0,0X78,0X1C,0X0C,0X1C,0X78,0XE0,
0XC0,0X80,0X00,0X00,0XFC,0XFC,0X00,0X00,0XFC,0XFC,0X00,0X00,0X80,0XC0,0XF0,0X78,
0X1C,0X0C,0X1C,0X78,0XE0,0XC0,0X80,0X00,0X00,0XFC,0XFC,0X00,0X00,0X0C,0X0C,0X8C,
0X8C,0X8C,0X8C,0X8C,0X8C,0X8C,0X8C,0X8C,0X8C,0XFC,0XFC,0XF8,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X80,0XFC,0XFC,0XFC,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0C,
0X0C,0X8C,0X8C,0X8C,0X8C,0X8C,0X8C,0X8C,0X8C,0X8C,0X8C,0XFC,0XFC,0XF8,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 960 B

@ -0,0 +1,34 @@
const unsigned char gImage_background[512] = {
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X24,0X42,0X42,0X24,0X18,
0X00,0X00,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0X7F,0X3F,0X80,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0X80,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XF0,0XE0,0XC8,0X18,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X18,0X08,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X0E,0X0E,0X0E,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
};

@ -0,0 +1,14 @@
const unsigned char gImage_number[12][88] = {
/*0*/ {0X00,0X00,0X1F,0X0F,0X27,0X30,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X30,0X27,0X0F,0X1F,0X00,0X00,0X00,0X00,0XFE,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0XFF,0XFE,0X00,0X00,0X00,0X00,0X3F,0X7F,0X3F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0X7F,0X3F,0X00,0X00,0X00,0X00,0XFC,0XF8,0XF2,0X06,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X06,0XF2,0XF8,0XFC,0X00,0X00},
/*1*/ {0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X1F,0X3F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0X7F,0X3F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XF8,0XFC,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00},
/*2*/ {0X00,0X00,0X00,0X20,0X30,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X30,0X27,0X0F,0X1F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0XFC,0XFE,0XFF,0X00,0X00,0X00,0X00,0X3F,0X7F,0XFF,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0X40,0X00,0X00,0X00,0X00,0X00,0XF8,0XF2,0XE6,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X06,0X02,0X00,0X00,0X00},
/*3*/ {0X00,0X00,0X20,0X30,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X37,0X2F,0X1F,0X00,0X00,0X00,0X00,0X00,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0XFE,0XFF,0XFE,0X00,0X00,0X00,0X00,0X80,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XBF,0X7F,0X3F,0X00,0X00,0X00,0X00,0X02,0X06,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0XE6,0XF2,0XF8,0X00,0X00},
/*4*/ {0X00,0X00,0X3F,0X1F,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X1F,0X3F,0X00,0X00,0X00,0X00,0XFE,0XFF,0XFD,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X00,0XFE,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0X80,0X3F,0X7F,0X3F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XF8,0XFC,0XFE,0X00,0X00},
/*5*/ {0X00,0X00,0X1F,0X2F,0X37,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X30,0X20,0X00,0X00,0X00,0X00,0X00,0XFF,0XFE,0XFD,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X40,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0X80,0X3F,0X7F,0X3F,0X00,0X00,0X00,0X00,0X02,0X06,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X06,0XF2,0XF8,0XFC,0X00,0X00},
/*6*/ {0X00,0X00,0X1F,0X2F,0X37,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X30,0X20,0X00,0X00,0X00,0X00,0X00,0XFE,0XFF,0XFF,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0X7F,0XFF,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0X80,0X3F,0X7F,0X3F,0X00,0X00,0X00,0X00,0XF8,0XF2,0XE6,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X06,0XF2,0XF8,0XFC,0X00,0X00},
/*7*/ {0X00,0X00,0X20,0X30,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X37,0X2F,0X1F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0X7F,0X3F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XF8,0XFC,0XFE,0X00,0X00},
/*8*/ {0X00,0X00,0X1F,0X2F,0X37,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X37,0X2F,0X1F,0X00,0X00,0X00,0X00,0XFE,0XFF,0XFE,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0XFE,0XFF,0XFE,0X00,0X00,0X00,0X00,0X3F,0X7F,0XBF,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XBF,0X7F,0X3F,0X00,0X00,0X00,0X00,0XF8,0XF2,0XE6,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0XE6,0XF2,0XF8,0X00,0X00},
/*9*/ {0X00,0X00,0X1F,0X2F,0X37,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X38,0X30,0X27,0X0F,0X1F,0X00,0X00,0X00,0X00,0XFE,0XFF,0XFF,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0XFE,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XBF,0X7F,0X3F,0X00,0X00,0X00,0X00,0X00,0X02,0X06,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0X0E,0XE6,0XF2,0XF8,0X00,0X00},
/* */ {0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00},
/*-*/ {0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0XC0,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00},
};

@ -0,0 +1 @@
#include "ak9757w.h"

@ -0,0 +1,9 @@
/** \file ak9757w.h */
#if !defined(AK9757W_H__A67BB088_3F4F_4CEB_8E75_7951713E9C3C__INCLUDED_)
#define AK9757W_H__A67BB088_3F4F_4CEB_8E75_7951713E9C3C__INCLUDED_
#include "define.h"
#include "struct.h"
#endif

@ -0,0 +1,221 @@
/** \file ak9757w_def.h */
#if !defined(AK9757W_DEF_H__4BA48BEA_F528_4C98_B828_6A11363D6764__INCLUDED_)
#define AK9757W_DEF_H__4BA48BEA_F528_4C98_B828_6A11363D6764__INCLUDED_
#define AK9757W_DEVICE_ADDRESS 0x6C
#define AK9757W_REG_RO_COMPANY_CODE 0x00 // Company Code
#define AK9757W_REG_RO_DEVICE_ID 0x01 // Device ID
#define AK9757W_REG_RO_INFORMATION1 0x02 // Information1
#define AK9757W_REG_RO_INFORMATION2 0x03 // Information2
#define AK9757W_REG_RO_STATUS 0x04 // Status
#define AK9757W_REG_RO_TOUTL 0x05 // TOUT, TS, IR: data register
#define AK9757W_REG_RO_TOUTH 0x06 // TOUT, TS, IR: data register
#define AK9757W_REG_RO_TSL 0x07 // TOUT, TS, IR: data register
#define AK9757W_REG_RO_TSH 0x08 // TOUT, TS, IR: data register
#define AK9757W_REG_RO_IRL 0x09 // TOUT, TS, IR: data register
#define AK9757W_REG_RO_IRH 0x0A // TOUT, TS, IR: data register
#define AK9757W_REG_RO_STATUS2 0x0B // Status2
#define AK9757W_REG_RO_SBUF0L 0x0C // Streaming Buffer data
#define AK9757W_REG_RO_SBUF0H 0x0D // Streaming Buffer data
#define AK9757W_REG_RO_SBUF1L 0x0E // Streaming Buffer data
#define AK9757W_REG_RO_SBUF1H 0x0F // Streaming Buffer data
#define AK9757W_REG_RO_SBUF2L 0x10 // Streaming Buffer data
#define AK9757W_REG_RO_SBUF2H 0x11 // Streaming Buffer data
#define AK9757W_REG_RO_SBUF3L 0x12 // Streaming Buffer data
#define AK9757W_REG_RO_SBUF3H 0x13 // Streaming Buffer data
#define AK9757W_REG_RO_SBUF4L 0x14 // Streaming Buffer data
#define AK9757W_REG_RO_SBUF4H 0x15 // Streaming Buffer data
#define AK9757W_REG_RO_SBUF5L 0x16 // Streaming Buffer data
#define AK9757W_REG_RO_SBUF5H 0x17 // Streaming Buffer data
#define AK9757W_REG_RO_SBUF6L 0x18 // Streaming Buffer data
#define AK9757W_REG_RO_SBUF6H 0x19 // Streaming Buffer data
#define AK9757W_REG_RO_SBUF7L 0x1A // Streaming Buffer data
#define AK9757W_REG_RO_SBUF7H 0x1B // Streaming Buffer data
#define AK9757W_REG_RO_SBUF8L 0x1C // Streaming Buffer data
#define AK9757W_REG_RO_SBUF8H 0x1D // Streaming Buffer data
#define AK9757W_REG_RO_SBUF9L 0x1E // Streaming Buffer data
#define AK9757W_REG_RO_SBUF9H 0x1F // Streaming Buffer data
#define AK9757W_REG_RW_CNTL1 0x20 // Soft Reset
#define AK9757W_REG_RW_CNTL2 0x21 // Streaming buffer control
#define AK9757W_REG_RW_CNTL3 0x22 // I/V AMP, Temp. calc., ODR setting
#define AK9757W_REG_RW_CNTL4 0x23 // Interrupt setting
#define AK9757W_REG_RW_CNTL5 0x24 // Threshold judgment setting
#define AK9757W_REG_RW_CNTL6 0x25 // Threshold Level setting low
#define AK9757W_REG_RW_CNTL7 0x26 // Threshold Level setting high
#define AK9757W_REG_RW_CNTL8 0x27 // ADC average number setting
#define AK9757W_REG_RW_CNTL9 0x28 // Mode setting
#define AK9757W_REG_RW_FCOEF4L 0x29 // Calculation coefficient setting
#define AK9757W_REG_RW_FCOEF4H 0x2A // Calculation coefficient setting
#define AK9757W_REG_RW_FCOEF4EX 0x2B // Calculation coefficient setting
#define AK9757W_REG_RW_FCOEF3L 0x2C // Calculation coefficient setting
#define AK9757W_REG_RW_FCOEF3H 0x2D // Calculation coefficient setting
#define AK9757W_REG_RW_FCOEF3EX 0x2E // Calculation coefficient setting
#define AK9757W_REG_RW_FCOEF2L 0x2F // Calculation coefficient setting
#define AK9757W_REG_RW_FCOEF2H 0x30 // Calculation coefficient setting
#define AK9757W_REG_RW_FCOEF2EX 0x31 // Calculation coefficient setting
#define AK9757W_REG_RW_FCOEF1L 0x32 // Calculation coefficient setting
#define AK9757W_REG_RW_FCOEF1H 0x33 // Calculation coefficient setting
#define AK9757W_REG_RW_FCOEF1EX 0x34 // Calculation coefficient setting
#define AK9757W_REG_RW_FCOEF0L 0x35 // Calculation coefficient setting
#define AK9757W_REG_RW_FCOEF0H 0x36 // Calculation coefficient setting
#define AK9757W_REG_RW_GCOEF4L 0x37 // Calculation coefficient setting
#define AK9757W_REG_RW_GCOEF4H 0x38 // Calculation coefficient setting
#define AK9757W_REG_RW_GCOEF4EX 0x39 // Calculation coefficient setting
#define AK9757W_REG_RW_GCOEF3L 0x3A // Calculation coefficient setting
#define AK9757W_REG_RW_GCOEF3H 0x3B // Calculation coefficient setting
#define AK9757W_REG_RW_GCOEF3EX 0x3C // Calculation coefficient setting
#define AK9757W_REG_RW_GCOEF2L 0x3D // Calculation coefficient setting
#define AK9757W_REG_RW_GCOEF2H 0x3E // Calculation coefficient setting
#define AK9757W_REG_RW_GCOEF3EX 0x3F // Calculation coefficient setting
#define AK9757W_REG_RW_GCOEF1L 0x40 // Calculation coefficient setting
#define AK9757W_REG_RW_GCOEF1H 0x41 // Calculation coefficient setting
#define AK9757W_REG_RW_GCOEF1EX 0x42 // Calculation coefficient setting
#define AK9757W_REG_RW_GCOEF0L 0x43 // Calculation coefficient setting
#define AK9757W_REG_RW_GCOEF0H 0x44 // Calculation coefficient setting
#define AK9757W_REG_RW_XCOEF4L 0x45 // Calculation coefficient setting
#define AK9757W_REG_RW_XCOEF4H 0x46 // Calculation coefficient setting
#define AK9757W_REG_RW_XCOEF4EX 0x47 // Calculation coefficient setting
#define AK9757W_REG_RW_XCOEF3L 0x48 // Calculation coefficient setting
#define AK9757W_REG_RW_XCOEF3H 0x49 // Calculation coefficient setting
#define AK9757W_REG_RW_XCOEF3EX 0x4A // Calculation coefficient setting
#define AK9757W_REG_RW_XCOEF2L 0x4B // Calculation coefficient setting
#define AK9757W_REG_RW_XCOEF2H 0x4C // Calculation coefficient setting
#define AK9757W_REG_RW_XCOEF3EX 0x4D // Calculation coefficient setting
#define AK9757W_REG_RW_XCOEF1L 0x4E // Calculation coefficient setting
#define AK9757W_REG_RW_XCOEF1H 0x4F // Calculation coefficient setting
#define AK9757W_REG_RW_XCOEF1EX 0x50 // Calculation coefficient setting
#define AK9757W_REG_RW_XCOEF0L 0x51 // Calculation coefficient setting
#define AK9757W_REG_RW_XCOEF0H 0x52 // Calculation coefficient setting
#define AK9757W_REG_RW_GIRL 0x54 // IR gain Correction parameter setting
#define AK9757W_REG_RW_GIRH 0x55 // IR gain Correction parameter setting
#define AK9757W_REG_RW_OIRL 0x56 // IR offset Correction parameter setting
#define AK9757W_REG_RW_OIRH 0x57 // IR offset Correction parameter setting
#define AK9757W_REG_RW_GTS 0x58 // TS Gain Correction parameter setting
#define AK9757W_REG_RW_OTSL 0x59 // TS offset Correction parameter setting
#define AK9757W_REG_RW_OTSH 0x5A // TS offset Correction parameter setting
#define AK9757W_REG_RW_GIT 0x5B // Temperature dependent ingredient of IR gain setting
#define AK9757W_REG_RO_CHIPID 0x5C // Chip ID
///////////////////////////////////////////////////////////
#define AK9757W_COMPANY_CODE_VALUE 0x48
#define AK9757W_DEVICE_ID_VALUE 0x17
#define AK9757W_INFORMATION1_VALUE 0x00
#define AK9757W_INFORMATION2_VALUE 0x00
#define AK9757W_STATUS_DRDY_POS 0x00
#define AK9757W_STATUS_DRDY_MSK 0x01
#define AK9757W_STATUS_BFULL_POS 0x01
#define AK9757W_STATUS_BFULL_MSK 0x01
#define AK9757W_STATUS_THL_POS 0x02
#define AK9757W_STATUS_THL_MSK 0x01
#define AK9757W_STATUS_THH_POS 0x03
#define AK9757W_STATUS_THH_MSK 0x01
#define AK9757W_CNTL1_SRST_POS 0x00
#define AK9757W_CNTL1_SRST_MSK 0x01
#define AK9757W_CNTL2_BUFON_POS 0x00
#define AK9757W_CNTL2_BUFON_MSK 0x01
#define AK9757W_CNTL3_ODR_POS 0x00
#define AK9757W_CNTL3_ODR_MSK 0x03
#define AK9757W_CNTL3_CALC_POS 0x03
#define AK9757W_CNTL3_CALC_MSK 0x01
#define AK9757W_CNTL3_GAIN_POS 0x04
#define AK9757W_CNTL3_GAIN_MSK 0x07
#define AK9757W_CNTL3_IROFF_POS 0x07
#define AK9757W_CNTL3_IROFF_MSK 0x01
#define AK9757W_CNTL4_IDRDY_POS 0x00
#define AK9757W_CNTL4_IDRDY_MSK 0x01
#define AK9757W_CNTL4_IBFULL_POS 0x01
#define AK9757W_CNTL4_IBFULL_MSK 0x01
#define AK9757W_CNTL4_ITHL_POS 0x02
#define AK9757W_CNTL4_ITHL_MSK 0x01
#define AK9757W_CNTL4_ITHU_POS 0x03
#define AK9757W_CNTL4_ITHU_MSK 0x01
#define AK9757W_CNTL4_IOVF_POS 0x04
#define AK9757W_CNTL4_IOVF_MSK 0x01
#define AK9757W_CNTL4_ANG_POS 0x07
#define AK9757W_CNTL4_ANG_MSK 0x01
#define AK9757W_CNTL5_DNUM_POS 0x00
#define AK9757W_CNTL5_DNUM_MSK 0x0F
#define AK9757W_CNTL5_DIFFON_POS 0x04
#define AK9757W_CNTL5_DIFFON_MSK 0x01
#define AK9757W_CNTL5_THSEL_POS 0x05
#define AK9757W_CNTL5_THSEL_MSK 0x01
#define AK9757W_CNTL5_TOUTLPF_POS 0x06
#define AK9757W_CNTL5_TOUTLPF_MSK 0x01
#define AK9757W_CNTL5_LPFON_POS 0x07
#define AK9757W_CNTL5_LPFON_MSK 0x01
#define AK9757W_CNTL8_AVN_POS 0x00
#define AK9757W_CNTL8_AVN_MSK 0x3F
#define AK9757W_CNTL9_MODE_POS 0x00
#define AK9757W_CNTL9_MODE_MSK 0x01
#define AK9757W_CNTL9_IRINV_POS 0x04
#define AK9757W_CNTL9_IRINV_MSK 0x01
#define AK9757W_FCOEF2EX_FC2EX_POS 0x00
#define AK9757W_FCOEF2EX_FC2EX_MSK 0x3F
#define AK9757W_FCOEF1EX_FC1EX_POS 0x00
#define AK9757W_FCOEF1EX_FC1EX_MSK 0x1F
#define AK9757W_GCOEF2EX_GC2EX_POS 0x00
#define AK9757W_GCOEF2EX_GC2EX_MSK 0x3F
#define AK9757W_GCOEF1EX_GC1EX_POS 0x00
#define AK9757W_GCOEF1EX_GC1EX_MSK 0x1F
#define AK9757W_XCOEF2EX_GC2EX_POS 0x00
#define AK9757W_XCOEF2EX_GC2EX_MSK 0x3F
#define AK9757W_XCOEF1EX_GC1EX_POS 0x00
#define AK9757W_XCOEF1EX_GC1EX_MSK 0x1F
#define AK9757W_OIR_OIR_H_POS 0x00
#define AK9757W_OIR_OIR_H_MSK 0x0F
#define AK9757W_OTS_OTS_H_POS 0x00
#define AK9757W_OTS_OTS_H_MSK 0x3F
#if 0
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#define AK9757W_REG_
#endif
#endif

File diff suppressed because one or more lines are too long

@ -148,14 +148,51 @@
<Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0MAX32660 -FS00 -FL040000 -FP0($$Device:MAX32660$Flash\MAX32660.FLM))</Name> <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0MAX32660 -FS00 -FL040000 -FP0($$Device:MAX32660$Flash\MAX32660.FLM))</Name>
</SetRegEntry> </SetRegEntry>
</TargetDriverDllRegistry> </TargetDriverDllRegistry>
<Breakpoint/> <Breakpoint>
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>327</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>14270</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>..\Application\app_cli.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\AKM_Temperature_Demo\../Application/app_cli.c\327</Expression>
</Bp>
</Breakpoint>
<WatchWindow1>
<Ww>
<count>0</count>
<WinNumber>1</WinNumber>
<ItemText>Tx_RingBuffer</ItemText>
</Ww>
<Ww>
<count>1</count>
<WinNumber>1</WinNumber>
<ItemText>pRingbuffer</ItemText>
</Ww>
</WatchWindow1>
<MemoryWindow1>
<Mm>
<WinNumber>1</WinNumber>
<SubType>0</SubType>
<ItemText>cacheMemLcd</ItemText>
<AccSizeX>0</AccSizeX>
</Mm>
</MemoryWindow1>
<Tracepoint> <Tracepoint>
<THDelay>0</THDelay> <THDelay>0</THDelay>
</Tracepoint> </Tracepoint>
<DebugFlag> <DebugFlag>
<trace>0</trace> <trace>0</trace>
<periodic>1</periodic> <periodic>1</periodic>
<aLwin>1</aLwin> <aLwin>0</aLwin>
<aCover>0</aCover> <aCover>0</aCover>
<aSer1>0</aSer1> <aSer1>0</aSer1>
<aSer2>0</aSer2> <aSer2>0</aSer2>
@ -315,17 +352,65 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<bShared>0</bShared> <bShared>0</bShared>
</File> </File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>10</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Application\app_i2c0.c</PathWithFileName>
<FilenameWithoutPath>app_i2c0.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>11</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Application\app_i2c1.c</PathWithFileName>
<FilenameWithoutPath>app_i2c1.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>12</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Application\app_log.c</PathWithFileName>
<FilenameWithoutPath>app_log.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>13</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Application\app_cli.c</PathWithFileName>
<FilenameWithoutPath>app_cli.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group> </Group>
<Group> <Group>
<GroupName>Device</GroupName> <GroupName>Device</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>2</GroupNumber> <GroupNumber>2</GroupNumber>
<FileNumber>10</FileNumber> <FileNumber>14</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -339,13 +424,13 @@
<Group> <Group>
<GroupName>Startup</GroupName> <GroupName>Startup</GroupName>
<tvExp>1</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>11</FileNumber> <FileNumber>15</FileNumber>
<FileType>2</FileType> <FileType>2</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -365,7 +450,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>12</FileNumber> <FileNumber>16</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -377,7 +462,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>13</FileNumber> <FileNumber>17</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -389,7 +474,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>14</FileNumber> <FileNumber>18</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -401,7 +486,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>15</FileNumber> <FileNumber>19</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -413,7 +498,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>16</FileNumber> <FileNumber>20</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -425,7 +510,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>17</FileNumber> <FileNumber>21</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -437,7 +522,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>18</FileNumber> <FileNumber>22</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -449,7 +534,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>19</FileNumber> <FileNumber>23</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -461,7 +546,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>20</FileNumber> <FileNumber>24</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -473,7 +558,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>21</FileNumber> <FileNumber>25</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -485,7 +570,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>22</FileNumber> <FileNumber>26</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -497,7 +582,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>23</FileNumber> <FileNumber>27</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -509,7 +594,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>24</FileNumber> <FileNumber>28</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -521,7 +606,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>25</FileNumber> <FileNumber>29</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -533,7 +618,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>26</FileNumber> <FileNumber>30</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -545,7 +630,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>27</FileNumber> <FileNumber>31</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -557,7 +642,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>28</FileNumber> <FileNumber>32</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -569,7 +654,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>29</FileNumber> <FileNumber>33</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -581,7 +666,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>30</FileNumber> <FileNumber>34</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -593,7 +678,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>31</FileNumber> <FileNumber>35</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -605,7 +690,7 @@
</File> </File>
<File> <File>
<GroupNumber>4</GroupNumber> <GroupNumber>4</GroupNumber>
<FileNumber>32</FileNumber> <FileNumber>36</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@ -625,9 +710,9 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>33</FileNumber> <FileNumber>37</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>1</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>..\Application\oled_ssd1306\ssd1306.c</PathWithFileName> <PathWithFileName>..\Application\oled_ssd1306\ssd1306.c</PathWithFileName>
@ -637,9 +722,9 @@
</File> </File>
<File> <File>
<GroupNumber>5</GroupNumber> <GroupNumber>5</GroupNumber>
<FileNumber>34</FileNumber> <FileNumber>38</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>1</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>..\Application\oled_ssd1306\ssd1306_i2c.c</PathWithFileName> <PathWithFileName>..\Application\oled_ssd1306\ssd1306_i2c.c</PathWithFileName>
@ -649,4 +734,48 @@
</File> </File>
</Group> </Group>
<Group>
<GroupName>Resource</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>39</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Application\resource\background.c</PathWithFileName>
<FilenameWithoutPath>background.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>40</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Application\resource\number.c</PathWithFileName>
<FilenameWithoutPath>number.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>41</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\Application\resource\Cammsys_Log.c</PathWithFileName>
<FilenameWithoutPath>Cammsys_Log.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
</ProjectOpt> </ProjectOpt>

@ -339,7 +339,7 @@
<MiscControls></MiscControls> <MiscControls></MiscControls>
<Define>TARGET=32660,TARGET_REV=0x4131</Define> <Define>TARGET=32660,TARGET_REV=0x4131</Define>
<Undefine></Undefine> <Undefine></Undefine>
<IncludePath>..\SDK\Device;..\SDK\Device\Include;..\SDK\Driver\Include;..\SDK\Driver\Source;..\SDK\FlashLoader;..\SDK\Startup;..\Application;..\Application\oled_ssd1306</IncludePath> <IncludePath>..\SDK\Device;..\SDK\Device\Include;..\SDK\Driver\Include;..\SDK\Driver\Source;..\SDK\FlashLoader;..\SDK\Startup;..\Application;..\Application\oled_ssd1306;..\Application\resource</IncludePath>
</VariousControls> </VariousControls>
</Cads> </Cads>
<Aads> <Aads>
@ -428,6 +428,26 @@
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>..\Application\app_uart.c</FilePath> <FilePath>..\Application\app_uart.c</FilePath>
</File> </File>
<File>
<FileName>app_i2c0.c</FileName>
<FileType>1</FileType>
<FilePath>..\Application\app_i2c0.c</FilePath>
</File>
<File>
<FileName>app_i2c1.c</FileName>
<FileType>1</FileType>
<FilePath>..\Application\app_i2c1.c</FilePath>
</File>
<File>
<FileName>app_log.c</FileName>
<FileType>1</FileType>
<FilePath>..\Application\app_log.c</FilePath>
</File>
<File>
<FileName>app_cli.c</FileName>
<FileType>1</FileType>
<FilePath>..\Application\app_cli.c</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>
@ -575,6 +595,26 @@
</File> </File>
</Files> </Files>
</Group> </Group>
<Group>
<GroupName>Resource</GroupName>
<Files>
<File>
<FileName>background.c</FileName>
<FileType>1</FileType>
<FilePath>..\Application\resource\background.c</FilePath>
</File>
<File>
<FileName>number.c</FileName>
<FileType>1</FileType>
<FilePath>..\Application\resource\number.c</FilePath>
</File>
<File>
<FileName>Cammsys_Log.c</FileName>
<FileType>1</FileType>
<FilePath>..\Application\resource\Cammsys_Log.c</FilePath>
</File>
</Files>
</Group>
</Groups> </Groups>
</Target> </Target>
</Targets> </Targets>

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.
Loading…
Cancel
Save