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);
							 |