133 lines
3.8 KiB
Plaintext
133 lines
3.8 KiB
Plaintext
diff --git a/iotelic/kunlun/Mainline/startup/misc/main.c b/iotelic/kunlun/Mainline/startup/misc/main.c
|
||
index 8b90072..44f5f07 100644
|
||
--- a/iotelic/kunlun/Mainline/startup/misc/main.c
|
||
+++ b/iotelic/kunlun/Mainline/startup/misc/main.c
|
||
@@ -57,13 +57,127 @@ static void startup_ftm_init()
|
||
proto_ftm_init();
|
||
#endif
|
||
}
|
||
+extern void iot_wdg_feed_dog();
|
||
+uint32_t iot_rtc_init(void);
|
||
+
|
||
+#include "iot_i2c_slave_api.h"
|
||
+#include "iot_i2c_api.h"
|
||
+
|
||
+
|
||
+uint8_t v = 0;
|
||
+void int_test(int t)
|
||
+{
|
||
+ //iot_printf("\r\n%d\r\n", __LINE__);
|
||
+ iot_gpio_value_set(44, v%2);
|
||
+ v++;
|
||
+ iot_gpio_interrupt_enable(t, 1);
|
||
+}
|
||
+#define IRAM_FUNC(x) __attribute__((section(".iram."#x))) x
|
||
+
|
||
+uint8_t IRAM_ATTR send_buf[100] = {0x10, 0x20, 0x30, 0x40, 0x50,0x60,0x70,0x80,0x90};
|
||
+uint8_t IRAM_ATTR recv_buf[100] = {0xa0, 0xb0, 0xc0, 0xd0};
|
||
+
|
||
+
|
||
+uint8_t IRAM_ATTR memory_buf[256] = {0};
|
||
+uint8_t IRAM_ATTR memory_addr=0;
|
||
+
|
||
+int IRAM_ATTR times = 0;
|
||
+void IRAM_FUNC(iot_i2c_slave_callback)(bool_t t);
|
||
+
|
||
+void iot_i2c_slave_callback(bool_t t)
|
||
+{
|
||
+ if(true == t) { // master 读数据,这里是slaver 所以需要发送数据
|
||
+ iot_i2c_s_write_data(IOT_I2C_S_PORT_0, send_buf, 1);
|
||
+ } else { // master 写数据,这里是slaver 所以需要接收数据
|
||
+ int num = iot_i2c_s_get_data_num(IOT_I2C_S_PORT_0);
|
||
+ uint8_t device_addr = iot_i2c_s_fifo_read_byte(IOT_I2C_S_PORT_0); //第一个字节为device地址
|
||
+ device_addr = device_addr;
|
||
+ times = 0;
|
||
+ memory_addr = iot_i2c_s_fifo_read_byte(IOT_I2C_S_PORT_0); //第二个字节为要写入的存储器首地址
|
||
+
|
||
+ //如果后面还有,则为data
|
||
+ for(int i = 0; i < num - 2; i++) {
|
||
+ memory_buf[memory_addr + i] = iot_i2c_s_fifo_read_byte(IOT_I2C_S_PORT_0);
|
||
+ //iot_printf("recv_buf[%d]=%02x\r\n", i, recv_buf[i] & 0xff );
|
||
+ }
|
||
+ //iot_printf("\r\n\r\n");
|
||
+ }
|
||
+
|
||
+}
|
||
+
|
||
+
|
||
+
|
||
|
||
void iot_startup_init_task(void *arg)
|
||
{
|
||
uint8_t gpio_3v3;
|
||
+ //int gpio1 = 43;
|
||
for (;;) {
|
||
+
|
||
/* sub system init */
|
||
iot_sub_system_init();
|
||
+ iot_gpio_open_as_output(40);
|
||
+
|
||
+ //iot_gpio_open_as_interrupt(gpio1);
|
||
+ //iot_gpio_interrupt_config(gpio1, GPIO_INT_EDGE_BOTH, int_test, gpio1, 0);
|
||
+ //iot_gpio_interrupt_enable(gpio1, 1);
|
||
+
|
||
+
|
||
+
|
||
+ iot_printf("task 22 entry....\n");
|
||
+
|
||
+
|
||
+ iot_i2c_slave_cfg_t slave_cfg;
|
||
+
|
||
+
|
||
+
|
||
+ slave_cfg.port = IOT_I2C_S_PORT_0;
|
||
+ slave_cfg.addr = 0x0d;
|
||
+ slave_cfg.gpio.scl = 43;
|
||
+ slave_cfg.gpio.sda = 44;
|
||
+ slave_cfg.callback = iot_i2c_slave_callback;
|
||
+ iot_i2c_slave_init(&slave_cfg);
|
||
+
|
||
+//
|
||
+ // i2c master init
|
||
+ int gpio1 = 18;
|
||
+ int gpio2 = 19;
|
||
+
|
||
+ iot_i2c_module_cfg_t g_cfg = {0};
|
||
+ g_cfg.port = IOT_I2C_PORT_0;
|
||
+ g_cfg.nack_wait_num = 10;
|
||
+ g_cfg.baud = 20;
|
||
+ g_cfg.gpio.scl = gpio1;
|
||
+ g_cfg.gpio.sda = gpio2;
|
||
+ iot_i2c_module_init(&g_cfg);
|
||
+
|
||
+
|
||
+ //iot_gpio_open_as_output(gpio1);
|
||
+ //iot_gpio_open_as_output(gpio2);
|
||
+ for(;;) {
|
||
+
|
||
+ //iot_gpio_value_set(gpio1, 0);
|
||
+ //iot_gpio_value_set(gpio1, 1);
|
||
+
|
||
+ //iot_gpio_value_set(gpio2, 0);
|
||
+ //iot_gpio_value_set(gpio2, 1);
|
||
+
|
||
+ iot_printf("task 1 entry....\n");
|
||
+ if(0) {
|
||
+ if (0 != iot_i2c_write(g_cfg.port, 0x0d, (char *)recv_buf, 4)) {
|
||
+ iot_printf("i2c_write err\r\n");
|
||
+ }
|
||
+ }
|
||
+
|
||
+ if (0 != iot_i2c_read(g_cfg.port, 0x0d, (char *)recv_buf, 1)) {
|
||
+
|
||
+ }
|
||
+
|
||
+ os_delay(1000);
|
||
+ iot_wdg_feed_dog();
|
||
+
|
||
+ }
|
||
+//----------------------------------------------------------------------------------
|
||
|
||
/* open the 3v3 power for bluetooth, wifi, rtc and em_ext module */
|
||
gpio_3v3 = iot_board_get_gpio(GPIO_P3V3_EN);
|