{"id":170,"date":"2017-04-21T16:58:32","date_gmt":"2017-04-21T08:58:32","guid":{"rendered":"https:\/\/himmel.tech\/wp\/?p=170"},"modified":"2017-04-27T15:34:03","modified_gmt":"2017-04-27T07:34:03","slug":"%e5%bc%80%e5%8f%91%e6%97%a5%e5%bf%97-170421","status":"publish","type":"post","link":"https:\/\/himmel.tech\/wp\/?p=170","title":{"rendered":"\u5f00\u53d1\u65e5\u5fd7 170421"},"content":{"rendered":"<p>\u6628\u59293D\u6253\u5370\u4e86\u4e00\u4e2a\u5b89\u653e\u7535\u8def\u677f\u7684\u7ed3\u6784\u4ef6\uff0c\u7136\u540e\u53d1\u73b0\u6ca1\u6709\u6811\u8393\u6d3e\u7528\u7684M2.5\u7684\u87ba\u4e1d\uff0c\u8d76\u7d27\u7f51\u4e0a\u4e0b\u5355\u7136\u540e\u5f00\u59cb\u7801\u522b\u7684\u3002<\/p>\n<p>\u60f3\u4e86\u4e00\u4e0b\uff0c\u4eba\u5bb6MPU9250\u660e\u660e\u662f\u6709GPIO\u4e2d\u65ad\u8f93\u51fa\u7684\uff0c\u5e72\u5565\u8981\u7528\u5ef6\u8fdf\u5462\uff0c\u6539\u4e2a\u4e2d\u65ad\u5427\uff0c\u4e8e\u662f\u4eca\u5929\u57fa\u672c\u5c31\u6298\u817e\u4e86\u4e00\u5929\u4e2d\u65ad\u3002<\/p>\n<p>\u5176\u5b9e\u4e2d\u65ad\u4e5f\u4e0d\u662f\u5f88\u96be\uff0c\u7528wiringPi\u8fd9\u4e2a\u5e93\u5c31\u53ef\u4ee5\u4e86\uff0c\u6216\u8005BCM\u7684\u90a3\u5957\u4e5f\u884c\u3002\u4e0d\u8fc7\u7528\u4e86wiringPi\u4e4b\u540e\u6267\u884c\u9700\u8981root\u6743\u9650\uff0c\u8ba9\u6211\u4e0d\u592a\u9ad8\u5174\u3002Linux\u4e0d\u662f\u4e00\u5207\u7686\u6587\u4ef6\u5417\uff1fLinux\u4e0d\u662f\u6709GPIO\u5b50\u7cfb\u7edf\u5417\uff1f\u501f\u52a9\u8fd9\u4e2a\u5b50\u7cfb\u7edf\u4e0d\u5c31\u597d\u4e86\uff1f<\/p>\n<p>\u522b\u8bf4\uff0c\u8fd8\u771f\u6709\uff0c\u7528\/sys\/class\/gpio\/\u8fd9\u4e2a\u76ee\u5f55\u5c31\u53ef\u4ee5\u4e86\u3002\u8fd9\u4e2a\u8981\u6c42\u7f16\u8bd1\u5185\u6838\u65f6\u5f00\u542f<em>Device Drivers -&gt;\u00a0GPIO Support -&gt; \/sys\/class\/gpio\/\u2026 (sysfs interface)<\/em>\u00a0\u8fd9\u4e2a\u9009\u9879\uff0c\u6811\u8393\u6d3e\u5b98\u65b9\u955c\u50cf\u7684\u5185\u6838\u5df2\u7ecf\u5f00\u542f\u4e86\u3002<\/p>\n<p>\u7136\u540e<code>echo \u7aef\u53e3\u53f7(BCM) &gt; \/sys\/class\/gpio\/export<\/code>\u6765\u5c06\u8fd9\u4e2a\u63a5\u53e3\u4ece\u5185\u6838\u4e2d\u66b4\u9732\u51fa\u6765\uff0c\u63a5\u4e0b\u6765\u5c31\u53ef\u4ee5\u901a\u8fc7\/sys\/class\/gpio\/gpio*\/\u4e0b\u7684direction value edge\u8fd9\u51e0\u4e2a\u6587\u4ef6\u6765\u8fdb\u884c\u8f93\u5165\u8f93\u51fa\u548c\u4e2d\u65ad\u89e6\u53d1\u8fb9\u6cbf\u9009\u62e9\u4e86\u3002<\/p>\n<p>\u6700\u540e\u600e\u4e48\u7528\u4f5c\u4e2d\u65ad\u5462\uff1fselect\/poll\/epoll\u90fd\u53ef\u4ee5\u4e86\uff0c\u5b83\u4eec\u4f1a\u6302\u8d77\u7ebf\u7a0b\u77e5\u9053\u6587\u4ef6\u5185\u5bb9\u6539\u53d8\u3002<\/p>\n<p>\u53e6\u5916\u8fd9\u662f\u6211\u7684\u53c2\u8003\u6587\u7ae0\uff1a<a href=\"http:\/\/blog.sina.com.cn\/s\/blog_7880d3350102w2um.html\">http:\/\/blog.sina.com.cn\/s\/blog_7880d3350102w2um.html<\/a><\/p>\n<p>\u53e6\u5916MPU9250\u8fd8\u603b\u662f\u6709\u96f6\u6f02\uff0c\u6211\u524d\u51e0\u5468\u8c03\u597d\u4e86\uff0c\u4eca\u5929\u4e0a\u7535\u4e00\u770b\u98d8\u4e860.4dps\uff0c\u7ea0\u6b63\u8fc7\u6765\u540e\u4e00\u770b\u53c8\u6f02\u4e860.1dps\uff0c\u6839\u672c\u4e0d\u77e5\u9053\u8be5\u600e\u4e48\u5904\u7406\u3002\u8fd9\u5012\u8fd8\u597d\uff0c\u5927\u4e0d\u4e86\u7cfb\u7edf\u542f\u52a8\u65f6\u7ea0\u504f\uff0c\u4f46\u5b83\u8981\u662f\u8d70\u7740\u8d70\u7740\u98d8\u8d77\u6765\u4e86\u8be5\u548b\u529e\uff1f<\/p>\n<p><!--more--><\/p>\n<p>\u9644\u4e0a\u7a0b\u5e8f\u4e00\u6bb5\uff1a<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\">void MPU9250::getData(MPU9250 *obj) {\n\n  int gpio_fd;\n  struct pollfd fds[1];\n  char buff[10];\n  gpio_fd = open(\"\/sys\/class\/gpio\/gpio17\/value\",O_RDONLY);\n  if(gpio_fd &lt; 0){\n    throw I2C_Exception(I2C_Exception::Device_Not_Exist);\n  }\n  fds[0].fd = gpio_fd;\n  fds[0].events  = POLLPRI;\n  read(gpio_fd,buff,10);\n\n  const uint8_t startAddr = 0x3b;\n  uint8_t data[14];\n  while (obj-&gt;run) {\n    \/\/ Wait for MPU9250 RAW data ready interrupt\n    poll(fds,1,-1);\n    if( fds[0].revents &amp; POLLPRI) {\n      lseek(gpio_fd, 0, SEEK_SET);\n      read(gpio_fd, buff, 10);\n    }\n    \/\/ Get data\n    Balabala;\n  }\n  close(gpio_fd);\n}<\/pre>\n<p>\u542f\u52a8\u811a\u672c\uff1a<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">echo 17 &gt; \/sys\/class\/gpio\/export\nsleep 1 #\u5c06GPIO\u66b4\u9732\u51fa\u6765\u9700\u8981\u65f6\u95f4\necho in &gt; \/sys\/class\/gpio\/gpio17\/direction\necho rising &gt; \/sys\/class\/gpio\/gpio17\/edge\n.\/wqmbd<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6628\u59293D\u6253\u5370\u4e86\u4e00\u4e2a\u5b89\u653e\u7535\u8def\u677f\u7684\u7ed3\u6784\u4ef6\uff0c\u7136\u540e\u53d1\u73b0\u6ca1\u6709\u6811\u8393\u6d3e\u7528\u7684M2.5\u7684\u87ba\u4e1d\uff0c\u8d76\u7d27\u7f51\u4e0a\u4e0b\u5355\u7136\u540e\u5f00\u59cb\u7801\u522b\u7684\u3002 \u60f3\u4e86 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/himmel.tech\/wp\/?p=170\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">\u201c\u5f00\u53d1\u65e5\u5fd7 170421\u201d<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[2],"tags":[],"class_list":["post-170","post","type-post","status-publish","format-standard","hentry","category-development-diary"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p83CFH-2K","_links":{"self":[{"href":"https:\/\/himmel.tech\/wp\/index.php?rest_route=\/wp\/v2\/posts\/170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/himmel.tech\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/himmel.tech\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/himmel.tech\/wp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/himmel.tech\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=170"}],"version-history":[{"count":1,"href":"https:\/\/himmel.tech\/wp\/index.php?rest_route=\/wp\/v2\/posts\/170\/revisions"}],"predecessor-version":[{"id":171,"href":"https:\/\/himmel.tech\/wp\/index.php?rest_route=\/wp\/v2\/posts\/170\/revisions\/171"}],"wp:attachment":[{"href":"https:\/\/himmel.tech\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=170"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/himmel.tech\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=170"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/himmel.tech\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}