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