当前位置: 首页 > news >正文

预售网站开发温州手机网站开发

预售网站开发,温州手机网站开发,湖北做网站推广,长沙网站建设哪个好1)实验平台#xff1a;正点原子Linux开发板2)摘自《正点原子I.MX6U嵌入式Linux驱动开发指南》关注官方微信号公众号#xff0c;获取更多资料#xff1a;正点原子文件bsp_spi.c中有两个函数#xff1a;spi_init和spich0_readwrite_byte#xff0c;函数spi_init是SPI初始化函…1)实验平台正点原子Linux开发板2)摘自《正点原子I.MX6U嵌入式Linux驱动开发指南》关注官方微信号公众号获取更多资料正点原子文件bsp_spi.c中有两个函数spi_init和spich0_readwrite_byte函数spi_init是SPI初始化函数此函数会初始化SPI的时钟通道等。函数spich0_readwrite_byte是SPI收发函数通过此函数即可完成SPI的全双工数据收发。接下来在文件bsp_icm20608.h中输入如下内容示例代码27.3.3 bsp_icm20608.h文件代码1 #ifndef _BSP_ICM20608_H2 #define _BSP_ICM20608_H3/***************************************************************4 Copyright © zuozhongkai Co., Ltd. 1998-2019. All rights reserved.5 文件名 : bsp_icm20608.h6 作者 : 左忠凯7 版本 : V1.08 描述 : ICM20608驱动文件。9 其他 : 无10 论坛 : www.openedv.com11 日志 : 初版V1.0 2019/3/26 左忠凯创建12 ***************************************************************/13 #include imx6ul.h14 #include bsp_gpio.h1516/* SPI片选信号 */17 #define ICM20608_CSN(n)(n ? gpio_pinwrite(GPIO1,20,1):gpio_pinwrite(GPIO1,20,0))1819 #define ICM20608G_ID 0XAF/* ID值 */20 #define ICM20608D_ID 0XAE/* ID值 */2122/* ICM20608寄存器23 *复位后所有寄存器地址都为0除了24 *Register 107(0X6B) Power Management 1 0x4025 *Register 117(0X75) WHO_AM_I 0xAF或者0xAE26 */27/* 陀螺仪和加速度自测(出产时设置用于与用户的自检输出值比较) */28 #define ICM20_SELF_TEST_X_GYRO 0x0029 #define ICM20_SELF_TEST_Y_GYRO 0x0130 #define ICM20_SELF_TEST_Z_GYRO 0x0231 #define ICM20_SELF_TEST_X_ACCEL 0x0D32 #define ICM20_SELF_TEST_Y_ACCEL 0x0E33 #define ICM20_SELF_TEST_Z_ACCEL 0x0F34/***********省略掉其他宏定义*************/35 #define ICM20_ZA_OFFSET_H 0x7D36 #define ICM20_ZA_OFFSET_L 0x7E3738/*39 * ICM20608结构体40 */41struct icm20608_dev_struc42{43 signedint gyro_x_adc; /* 陀螺仪X轴原始值 */44 signedint gyro_y_adc; /* 陀螺仪Y轴原始值 */45 signedint gyro_z_adc; /* 陀螺仪Z轴原始值 */46 signedint accel_x_adc; /* 加速度计X轴原始值 */47 signedint accel_y_adc; /* 加速度计Y轴原始值 */48 signedint accel_z_adc; /* 加速度计Z轴原始值 */49 signedint temp_adc; /* 温度原始值 */5051 /* 下面是计算得到的实际值扩大100倍 */52 signedint gyro_x_act; /* 陀螺仪X轴实际值 */53 signedint gyro_y_act; /* 陀螺仪Y轴实际值 */54 signedint gyro_z_act; /* 陀螺仪Z轴实际值 */55 signedint accel_x_act; /* 加速度计X轴实际值 */56 signedint accel_y_act; /* 加速度计Y轴实际值 */57 signedint accel_z_act; /* 加速度计Z轴实际值 */58 signedint temp_act; /* 温度实际值 */59};6061struct icm20608_dev_struc icm20608_dev;/* icm20608设备 */6263/* 函数声明 */64unsignedchar icm20608_init(void);65void icm20608_write_reg(unsignedchar reg,unsignedchar value);66unsignedchar icm20608_read_reg(unsignedchar reg);67void icm20608_read_len(unsignedchar reg,unsignedchar*buf,unsignedchar len);68void icm20608_getdata(void);69 #endif文件bsp_icm20608.h里面先定义了一个宏ICM20608_CSN这个是ICM20608的SPI片选引脚。接下来定义了一些ICM20608的ID和寄存器地址。第41行定义了一个结构体icm20608_dev_struc这个结构体是ICM20608的设备结构体里面的成员变量用来保存ICM20608的原始数据值和经过转换得到的实际值。实际值是有小数的本章例程取两位小数为了方便计算实际值扩大了100倍这样实际值就是整数了但是在使用的时候要除100重新得到小数部分。最后就是一些函数声明接下来在文件bsp_icm20608.c中输入如下所示内容示例代码27.3.4 bsp_icm20608.c文件代码/***************************************************************Copyright © zuozhongkai Co., Ltd. 1998-2019. All rights reserved.文件名 : bsp_icm20608.c作者 : 左忠凯版本 : V1.0描述 : ICM20608驱动文件。其他 : 无论坛 : www.openedv.com日志 : 初版V1.0 2019/3/26 左忠凯创建***************************************************************/1 #include bsp_icm20608.h2 #include bsp_delay.h3 #include bsp_spi.h4 #include stdio.h56struct icm20608_dev_struc icm20608_dev;/* icm20608设备 */78/*9 * description : 初始化ICM2060810 * param : 无11 * return : 0 初始化成功其他值初始化失败12 */13unsignedchar icm20608_init(void)14{15unsignedchar regvalue;16 gpio_pin_config_t cs_config;1718/* 1、ESPI3 IO初始化19 * ECSPI3_SCLK - UART2_RXD20 * ECSPI3_MISO - UART2_RTS21 * ECSPI3_MOSI - UART2_CTS22 */23 IOMUXC_SetPinMux(IOMUXC_UART2_RX_DATA_ECSPI3_SCLK,0);24 IOMUXC_SetPinMux(IOMUXC_UART2_CTS_B_ECSPI3_MOSI,0);25 IOMUXC_SetPinMux(IOMUXC_UART2_RTS_B_ECSPI3_MISO,0);26 IOMUXC_SetPinConfig(IOMUXC_UART2_RX_DATA_ECSPI3_SCLK,0x10B1);27 IOMUXC_SetPinConfig(IOMUXC_UART2_CTS_B_ECSPI3_MOSI,0x10B1);28 IOMUXC_SetPinConfig(IOMUXC_UART2_RTS_B_ECSPI3_MISO,0x10B1);2930/* 初始化片选引脚 */31 IOMUXC_SetPinMux(IOMUXC_UART2_TX_DATA_GPIO1_IO20,0);32 IOMUXC_SetPinConfig(IOMUXC_UART2_TX_DATA_GPIO1_IO20,0X10B0);33 cs_config.direction kGPIO_DigitalOutput;34 cs_config.outputLogic 0;35 gpio_init(GPIO1,20,cs_config);3637/* 2、初始化SPI */38 spi_init(ECSPI3);3940 icm20608_write_reg(ICM20_PWR_MGMT_1,0x80);/* 复位 */41 delayms(50);42 icm20608_write_reg(ICM20_PWR_MGMT_1,0x01);/* 关闭睡眠 */43 delayms(50);4445 regvalue icm20608_read_reg(ICM20_WHO_AM_I);46 printf(icm20608 id %#X, regvalue);47if(regvalue ! ICM20608G_ID regvalue ! ICM20608D_ID)48return1;4950 icm20608_write_reg(ICM20_SMPLRT_DIV,0x00); /* 输出速率设置 */51 icm20608_write_reg(ICM20_GYRO_CONFIG,0x18);/* 陀螺仪±2000dps */52 icm20608_write_reg(ICM20_ACCEL_CONFIG,0x18);/* 加速度计±16G */53 icm20608_write_reg(ICM20_CONFIG,0x04);/* 陀螺BW20Hz */54 icm20608_write_reg(ICM20_ACCEL_CONFIG2,0x04);55 icm20608_write_reg(ICM20_PWR_MGMT_2,0x00);/* 打开所有轴 */56 icm20608_write_reg(ICM20_LP_MODE_CFG,0x00);/* 关闭低功耗 */57 icm20608_write_reg(ICM20_FIFO_EN,0x00); /* 关闭FIFO */58return0;59}6061/*62 * description : 写ICM20608指定寄存器63 * param - reg : 要读取的寄存器地址64 * param – value : 要写入的值65 * return : 无66 */67void icm20608_write_reg(unsignedchar reg,unsignedchar value)68{69/* ICM20608在使用SPI接口的时候寄存器地址只有低7位有效,70 * 寄存器地址最高位是读/写标志位读的时候要为1写的时候要为0。71 */72 reg ~0X80;7374 ICM20608_CSN(0); /* 使能SPI传输 */75 spich0_readwrite_byte(ECSPI3, reg); /* 发送寄存器地址 */76 spich0_readwrite_byte(ECSPI3, value); /* 发送要写入的值 */77 ICM20608_CSN(1); /* 禁止SPI传输 */78}7980/*81 * description : 读取ICM20608寄存器值82 * param - reg : 要读取的寄存器地址83 * return : 读取到的寄存器值84 */85unsignedchar icm20608_read_reg(unsignedchar reg)86{87unsignedchar reg_val;8889/* ICM20608在使用SPI接口的时候寄存器地址只有低7位有效,90 * 寄存器地址最高位是读/写标志位读的时候要为1写的时候要为0。91 */92 reg |0x80;9394 ICM20608_CSN(0); /* 使能SPI传输 */95 spich0_readwrite_byte(ECSPI3, reg); /* 发送寄存器地址 */96 reg_val spich0_readwrite_byte(ECSPI3,0XFF);/* 读取寄存器的值*/97 ICM20608_CSN(1); /* 禁止SPI传输 */98return(reg_val); /* 返回读取到的寄存器值 */99}100101/*102 * description : 读取ICM20608连续多个寄存器103 * param - reg : 要读取的寄存器地址104 * return : 读取到的寄存器值105 */106void icm20608_read_len(unsignedchar reg,unsignedchar*buf,unsignedchar len)107{108unsignedchar i;109110/* ICM20608在使用SPI接口的时候寄存器地址只有低7位有效,111 * 寄存器地址最高位是读/写标志位读的时候要为1写的时候要为0。112 */113 reg |0x80;114115 ICM20608_CSN(0);/* 使能SPI传输 */116 spich0_readwrite_byte(ECSPI3, reg);/* 发送寄存器地址 */117for(i 0; i len; i)/* 顺序读取寄存器的值 */118{119 buf[i] spich0_readwrite_byte(ECSPI3,0XFF);120}121 ICM20608_CSN(1);/* 禁止SPI传输 */122}123124/*125 * description : 获取陀螺仪的分辨率126 * param : 无127 * return : 获取到的分辨率128 */129float icm20608_gyro_scaleget(void)130{131unsignedchar data;132float gyroscale;133134 data (icm20608_read_reg(ICM20_GYRO_CONFIG)3)0X3;135switch(data){136case0:137 gyroscale 131;138break;139case1:140 gyroscale 65.5;141break;142case2:143 gyroscale 32.8;144break;145case3:146 gyroscale 16.4;147break;148}149return gyroscale;150}151152/*153 * description : 获取加速度计的分辨率154 * param : 无155 * return : 获取到的分辨率156 */157unsignedshort icm20608_accel_scaleget(void)158{159unsignedchar data;160unsignedshort accelscale;161162 data (icm20608_read_reg(ICM20_ACCEL_CONFIG)3)0X3;163switch(data){164case0:165 accelscale 16384;166break;167case1:168 accelscale 8192;169break;170case2:171 accelscale 4096;172break;173case3:174 accelscale 2048;175break;176}177return accelscale;178}179180/*181 * description : 读取ICM20608的加速度、陀螺仪和温度原始值182 * param : 无183 * return : 无184 */185void icm20608_getdata(void)186{187float gyroscale;188unsignedshort accescale;189unsignedchar data[14];190191 icm20608_read_len(ICM20_ACCEL_XOUT_H, data,14);192193 gyroscale icm20608_gyro_scaleget();194 accescale icm20608_accel_scaleget();195196 icm20608_dev.accel_x_adc (signedshort)((data[0]8)|data[1]);197 icm20608_dev.accel_y_adc (signedshort)((data[2]8)|data[3]);198 icm20608_dev.accel_z_adc (signedshort)((data[4]8)|data[5]);199 icm20608_dev.temp_adc (signedshort)((data[6]8)|data[7]);200 icm20608_dev.gyro_x_adc (signedshort)((data[8]8)|data[9]);201 icm20608_dev.gyro_y_adc (signedshort)((data[10]8)|data[11]);202 icm20608_dev.gyro_z_adc (signedshort)((data[12]8)|data[13]);203204/* 计算实际值 */205 icm20608_dev.gyro_x_act ((float)(icm20608_dev.gyro_x_adc)/gyroscale)*100;206 icm20608_dev.gyro_y_act ((float)(icm20608_dev.gyro_y_adc)/gyroscale)*100;207 icm20608_dev.gyro_z_act ((float)(icm20608_dev.gyro_z_adc)/gyroscale)*100;208 icm20608_dev.accel_x_act ((float)(icm20608_dev.accel_x_adc)/accescale)*100;209 icm20608_dev.accel_y_act ((float)(icm20608_dev.accel_y_adc)/accescale)*100;210 icm20608_dev.accel_z_act ((float)(icm20608_dev.accel_z_adc)/accescale)*100;211 icm20608_dev.temp_act (((float)(icm20608_dev.temp_adc)-25)/326.825)*100;212}文件bsp_imc20608.c是ICM20608的驱动文件里面有7个函数我们依次来看一下。第1个函数是icm20608_init这个是ICM20608的初始化函数此函数先初始化ICM20608所使用的SPI引脚将其复用为ECSPI3。因为我们本章的SPI片选采用软件控制的方式所以SPI片选引脚设置成了普通的输出模式。设置完SPI所使用的引脚以后就是调用函数spi_init来初始化SPI3最后初始化ICM20608就是配置ICM20608的寄存器。第2个和第3个函数分别是icm20608_write_reg和icm20608_read_reg这两个函数分别用于写/读ICM20608的指定寄存器。第4个函数是icm20608_read_len此函数也是读取ICM20608的寄存器值但是此函数可以读取连续多个寄存器的值一般用于读取ICM20608传感器数据。第5和第6个函数分别是icm20608_gyro_scaleget和icm20608_accel_scaleget这两个函数分别用于获取陀螺仪和加速度计的分辨率因为陀螺仪和加速度的测量范围设置的不同其分辨率就不同所以在计算实际值的时候要根据实际的量程范围来得到对应的分辨率。最后一个函数是icm20608_getdata此函数就是用于获取ICM20608的加速度计、陀螺仪和温度计的数据并且会根据设置的测量范围计算出实际的值比如加速度的g值、陀螺仪的角速度值和温度计的温度值。最后在main.c中输入如下内容示例代码27.3.5 main.c文件代码/**************************************************************Copyright © zuozhongkai Co., Ltd. 1998-2019. All rights reserved.文件名 : mian.c作者 : 左忠凯版本 : V1.0描述 : I.MX6U开发板裸机实验19 SPI实验其他 : SPI也是最常用的接口ALPHA开发板上有一个6轴传感器ICM20608这个六轴传感器就是SPI接口的本实验就来学习如何驱动I.MX6U的SPI接口并且通过SPI接口读取ICM20608的数据值。论坛 : www.openedv.com日志 : 初版V1.0 2019/1/17 左忠凯创建**************************************************************/1 #include bsp_clk.h2 #include bsp_delay.h3 #include bsp_led.h4 #include bsp_beep.h5 #include bsp_key.h6 #include bsp_int.h7 #include bsp_uart.h8 #include bsp_lcd.h9 #include bsp_rtc.h10 #include bsp_icm20608.h11 #include bsp_spi.h12 #include stdio.h1314/*15 * description : 指定的位置显示整数数据16 * param - x : X轴位置17 * param - y : Y轴位置18 * param – size : 字体大小19 * param - num : 要显示的数据20 * return : 无21 */22void integer_display(unsignedshort x,unsignedshort y,unsignedchar size,signedint num)23{24char buf[200];2526 lcd_fill(x, y, x 50, y size, tftlcd_dev.backcolor);2728 memset(buf,0,sizeof(buf));29if(num 0)30 sprintf(buf,-%d,-num);31else32 sprintf(buf,%d, num);33 lcd_show_string(x, y,50, size, size, buf);34}3536/*37 * description : 指定的位置显示小数数据,比如5123显示为51.2338 * param - x : X轴位置39 * param - y : Y轴位置40 * param – size : 字体大小41 * param - num : 要显示的数据实际小数扩大100倍42 * return : 无43 */44void decimals_display(unsignedshort x,unsignedshort y,unsignedchar size,signedint num)45{46signedint integ;/* 整数部分 */47signedint fract;/* 小数部分 */48signedint uncomptemp num;49char buf[200];5051if(num 0)52 uncomptemp -uncomptemp;53 integ uncomptemp /100;54 fract uncomptemp %100;5556 memset(buf,0,sizeof(buf));57if(num 0)58 sprintf(buf,-%d.%d, integ, fract);59else60 sprintf(buf,%d.%d, integ, fract);61 lcd_fill(x, y, x 60, y size, tftlcd_dev.backcolor);62 lcd_show_string(x, y,60, size, size, buf);63}6465/*66 * description : 使能I.MX6U的硬件NEON和FPU67 * param : 无68 * return : 无69 */70void imx6ul_hardfpu_enable(void)71{72uint32_t cpacr;73uint32_t fpexc;7475/* 使能NEON和FPU */76 cpacr __get_CPACR();77 cpacr (cpacr ~(CPACR_ASEDIS_Msk | CPACR_D32DIS_Msk))78|(3UL CPACR_cp10_Pos)|(3UL CPACR_cp11_Pos);79 __set_CPACR(cpacr);80 fpexc __get_FPEXC();81 fpexc |0x40000000UL;82 __set_FPEXC(fpexc);83}8485/*86 * description : main函数87 * param : 无88 * return : 无89 */90int main(void)91{92unsignedchar state OFF;9394 imx6ul_hardfpu_enable(); /* 使能I.MX6U的硬件浮点 */95 int_init(); /* 初始化中断(一定要最先调用) */96 imx6u_clkinit(); /* 初始化系统时钟 */97 delay_init(); /* 初始化延时 */98 clk_enable(); /* 使能所有的时钟 */99 led_init(); /* 初始化led */100 beep_init(); /* 初始化beep */101 uart_init(); /* 初始化串口波特率115200 */102 lcd_init(); /* 初始化LCD */103104 tftlcd_dev.forecolor LCD_RED;105 lcd_show_string(50,10,400,24,24,(char*)IMX6U-ALPHA SPI TEST);106 lcd_show_string(50,40,200,16,16,(char*)ICM20608 TEST);107 lcd_show_string(50,60,200,16,16,(char*)ATOMALIENTEK);108 lcd_show_string(50,80,200,16,16,(char*)2019/3/27);109110while(icm20608_init()) /* 初始化ICM20608 */111{112 lcd_show_string(50,100,200,16,16,(char*)ICM20608 Check Failed!);113 delayms(500);114 lcd_show_string(50,100,200,16,16,(char*)Please Check! );115 delayms(500);116}117 lcd_show_string(50,100,200,16,16,(char*)ICM20608 Ready);118 lcd_show_string(50,130,200,16,16,(char*)accel x:);119 lcd_show_string(50,150,200,16,16,(char*)accel y:);120 lcd_show_string(50,170,200,16,16,(char*)accel z:);121 lcd_show_string(50,190,200,16,16,(char*)gyro x:);122 lcd_show_string(50,210,200,16,16,(char*)gyro y:);123 lcd_show_string(50,230,200,16,16,(char*)gyro z:);124 lcd_show_string(50,250,200,16,16,(char*)temp :);125 lcd_show_string(50181,130,200,16,16,(char*)g);126 lcd_show_string(50181,150,200,16,16,(char*)g);127 lcd_show_string(50181,170,200,16,16,(char*)g);128 lcd_show_string(50181,190,200,16,16,(char*)o/s);129 lcd_show_string(50181,210,200,16,16,(char*)o/s);130 lcd_show_string(50181,230,200,16,16,(char*)o/s);131 lcd_show_string(50181,250,200,16,16,(char*)C);132133 tftlcd_dev.forecolor LCD_BLUE;134135while(1)136{137 icm20608_getdata();/* 获取数据值 */138/* 在LCD上显示原始值 */139 integer_display(5070,130,16, icm20608_dev.accel_x_adc);140 integer_display(5070,150,16, icm20608_dev.accel_y_adc);141 integer_display(5070,170,16, icm20608_dev.accel_z_adc);142 integer_display(5070,190,16, icm20608_dev.gyro_x_adc);143 integer_display(5070,210,16, icm20608_dev.gyro_y_adc);144 integer_display(5070,230,16, icm20608_dev.gyro_z_adc);145 integer_display(5070,250,16, icm20608_dev.temp_adc);146147/* 在LCD上显示计算得到的原始值 */148 decimals_display(507050,130,16,icm20608_dev.accel_x_act);149 decimals_display(507050,150,16,icm20608_dev.accel_y_act);150 decimals_display(507050,170,16,icm20608_dev.accel_z_act);151 decimals_display(507050,190,16,icm20608_dev.gyro_x_act);152 decimals_display(507050,210,16,icm20608_dev.gyro_y_act);153 decimals_display(507050,230,16,icm20608_dev.gyro_z_act);154 decimals_display(507050,250,16,icm20608_dev.temp_act);155 delayms(120);156 state !state;157 led_switch(LED0,state);158}159return0;160}文件main.c一开始有两个函数integer_display和decimals_display这两个函数用于在LCD上显示获取到的ICM20608数据值函数integer_display用于显示原始数据值也就是整数值。函数decimals_display用于显示实际值实际值扩大了100倍此函数会提取出实际值的整数部分和小数部分并显示在LCD上。另一个重要的函数是imx6ul_hardfpu_enable这个函数用于开启I.MX6U的NEON和硬件FPU(浮点运算单元)因为本章使用到了浮点运算而I.MX6U的Cortex-A7是支持NEON和FPU(VFPV4_D32)的但是在使用I.MX6U的硬件FPU之前是先要开启的。第110行调用了函数icm20608_init来初始化ICM20608如果初始化失败的话就会在LCD上闪烁提示语句。最后在main函数的while循环中不断的调用函数icm20608_getdata获取ICM20608的传感器数据并且显示在LCD上。实验程序编写就到这里结束了接下来就是编译、下载和验证了。27.4编译下载验证27.4.1 编写Makefile和链接脚本修改Makefile中的TARGET为icm20608然后在在INCDIRS和SRCDIRS中加入“bsp/spi”和“bsp/icm20608”修改后的Makefile如下示例代码27.4.1.1 Makefile文件代码1 CROSS_COMPILE ? arm-linux-gnueabihf-2 TARGET ? icm2060834/* 省略掉其它代码...... */56 INCDIRS : imx6ul 7 stdio/include 8 bsp/clk 9 bsp/led 10 bsp/delay 11 bsp/beep 12 bsp/gpio 13 bsp/key 14 bsp/exit 15 bsp/int 16 bsp/epittimer 17 bsp/keyfilter 18 bsp/uart 19 bsp/lcd 20 bsp/rtc 21 bsp/i2c 22 bsp/ap3216c 23 bsp/spi 24 bsp/icm206082526 SRCDIRS : project 27 stdio/lib 28 bsp/clk 29 bsp/led 30 bsp/delay 31 bsp/beep 32 bsp/gpio 33 bsp/key 34 bsp/exit 35 bsp/int 36 bsp/epittimer 37 bsp/keyfilter 38 bsp/uart 39 bsp/lcd 40 bsp/rtc 41 bsp/i2c 42 bsp/ap3216c 43 bsp/spi 44 bsp/icm206084546/* 省略掉其它代码...... */4748$(COBJS): obj/%.o : %.c49 $(CC) -Wall -marcharmv7-a -mfpuneon-vfpv4 -mfloat-abihard -Wa,-mimplicit-itthumb -nostdlib -fno-builtin-c -O2 $(INCLUDE) -o $ $5051 clean:52 rm -rf $(TARGET).elf $(TARGET).dis $(TARGET).bin $(COBJS)$(SOBJS)第2行修改变量TARGET为“icm20608”也就是目标名称为“ap3216c”。第23和24行在变量INCDIRS中添加SPI和ICM20608的驱动头文件(.h)路径。第43和44行在变量SRCDIRS中添加SPI和ICM20608驱动文件(.c)路径。第49行加入了“-marcharmv7-a -mfpuneon-vfpv4 -mfloat-abihard”指令这些指令用于指定编译浮点运算的时候使用硬件FPU。因为本章使用到了浮点运算而I.MX6U是支持硬件FPU的虽然我们在main函数中已经打开了NEON和FPU但是在编译相应C文件的时候也要指定使用硬件FPU来编译浮点运算。链接脚本保持不变。27.4.2编译下载使用Make命令编译代码编译成功以后使用软件imxdownload将编译完成的icm20608.bin文件下载到SD卡中命令如下chmod 777 imxdownload //给予imxdownload可执行权限一次即可./imxdownload icm20608.bin /dev/sdd //烧写到SD卡中烧写成功以后将SD卡插到开发板的SD卡槽中然后复位开发板。如果ICM20608工作正常的话就会在LCD上显示获取到的传感器数据如图27.4.2.1所示图27.4.2.1LCD界面在图27.4.2.1中可以看到加速度计Z轴在静止状态下是0.98g这不正是重力加速度。温度传感器测量到的温度是31.39°C这个是芯片内部的温度并不是室温芯片内部温度一般要比室温高。如果动一下开发板的话加速度计和陀螺仪的数据就会变化。
http://wiki.neutronadmin.com/news/169445/

相关文章:

  • 苏州比较大的网站公司失效网站建设费支出
  • 广州生物科技网站建设公司哪个网站衬衣做的好
  • 网站到期请续费济南传承网络李聪
  • 深圳自助企业建站模版自己做的网站有什么用
  • 建设通和天眼查网站小程序登录代码
  • 2022年网站能用的电子商务网站开发与应用的介绍
  • 中山东莞网站推广怎么弄网址
  • wordpress配置多站点wordpress部署到sae
  • 做展示空间设计的网站高端网站开发怎么选
  • 知乎网站内容建设的逻辑官方网站建设的四个步骤
  • 怎样找回网站备案密码错误北京二手房
  • 怎么把网站做的好看邦泽网站建设
  • 做全景图二维码的网站宝坻网站建设
  • 在线做简历的网站酒店类的电影网站模板
  • 网站源码哪个好重庆建筑安全信息网
  • 网站取消301后官方微信免费下载安装
  • 做灯箱的网站seo优化软件免费版
  • 自主建站是什么意思保定电子商务网站建设
  • 做游戏模型参考的网站做购物网站有什么要求吗
  • 旅游网站管理系统php外贸app
  • 网站右下角图片广告代码创意家居网站建设与管理
  • 旧货交易网站开发的背景wordpress lens 主题
  • 网站正在建设中提示页面wordpress删除菜单
  • 网站开发的职责与分工saas软件
  • 邢台移动网络优化是哪家公司汕头网站推广seo
  • 泰和网站建设太仓市建设招标网站
  • 会计证继续教育在哪个网站做四川省建设厅
  • 松桃和兴建设公司网站网站建设平台安全问题有哪些
  • 网站开发 自动生成缩略图展示中心展厅设计
  • 东莞建站网站建设产品推广wordpress安装tomcat