element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Members
    Members
    • Benefits of Membership
    • Achievement Levels
    • Members Area
    • Personal Blogs
    • Feedback and Support
    • What's New on element14
  • Learn
    Learn
    • Learning Center
    • eBooks
    • STEM Academy
    • Webinars, Training and Events
    • More
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • More
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • More
  • Products
    Products
    • Arduino
    • Dev Tools
    • Manufacturers
    • Raspberry Pi
    • RoadTests & Reviews
    • Avnet Boards Community
    • More
  • Store
    Store
    • Visit Your Store
    • Choose Another Store
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
Embedded
  • Technologies
  • More
Embedded
Blog MAX32660 Evaluation Kit - part 4a: Low Power Sensor design - Barometer Hardware
  • Blogs
  • Forums
  • Documents
  • Events
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Embedded requires membership for participation - click to join
Blog Post Actions
  • Subscribe by email
  • More
  • Cancel
  • Share
  • Subscribe by email
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: Jan Cumps
  • Date Created: 15 Dec 2018 6:07 PM Date Created
  • Views 189 views
  • Likes 3 likes
  • Comments 4 comments
  • RoadTest
  • rohm
  • rt
  • maxim
  • road_test
Related
Recommended

MAX32660 Evaluation Kit - part 4a: Low Power Sensor design - Barometer Hardware

Jan Cumps
Jan Cumps
15 Dec 2018

I'm road testing the  Ultra-Low Power Arm Cortex-M4 Darwin MCU EVM.

In these blog posts I try to build a real world low power design.

This post fits in two road tests. I'm testing the pressure sensor of the Rohm SensorShield-EVK-003 (Arduino Compatible)  kit together with the Maxim 32660 microcontroller. The goal is to capture pressure data and exchanging it with another device using as little energy as possible.

 

This is my first MAXIM microcontroller project and the first time I use the ROHM pressure sensor. Feel free to criticise every line of code in these posts. I'll put my ego on hold.

 

When I submitted my proposals for the road tests, I promised this for the ROHM kit: "... I will try to get each of them working on a different microcontroller ...".

For the MAXIM road test, I wrote: "I will design an application that collects data from a sensor at regular times, collect that info, then share in bulk with a consuming device.

I will check how low the energy use is inbetween the measurements. I will also check how easy it is to wake up, what the possible wake-up triggers are.

I will check if it is easy or hard to work with the device’s peripherals.".

I had another controller in mind then - didn't know I would be selected for the MAXIM controller. That makes it extra interesting.

Big promises. I hope I make them true with this project.

 

Hardware Choices

 

Sensor:

I selected the ROHM BM1383AGLV Pressure Sensor. I want to build a device that collects data at a slow pace. Accelerometers and other sensors from the ROHM kit are targetting real time use.

But the pressure sensor is a good candidate for slow, time based, data collection.

And it supports 1.8 V, the same as what I'm running the MAX32660 on. Plus it has a "data ready" trigger pin.

Finally, I didn't review this sensor as part of the Rohm SensorShield-EVK-003 (Arduino Compatible) - Review, so I can do that in this post.

 

MAX32660 Pin Assignments:

I want to support a set of functions with as little interference to the MAX32660 evaluation board as possible.

The USB port of the EVK is linked to the contrllers's UART 1A. I should stay away from pins P0_10 and P0_11.

I want to keep the option open to use another UART to exchange data with an IOT edge device.

That - if it happens - is going to be UART 1B on P0_0 and P0_1.

Communication to the ROHM BM1383AGLV pressure sensor should go via I2C 0A, pins P0_8 and P0_9.

Maybe, if I can remove the crystal, I'll use a 2nd i2c as gateway to the edge device. i2c is more forgiving for jitter than UART.

 

Power Management:

I'd like to put the controller in an as deep as possible sleep between activation. A sleep mode I can recover from using the clocks.

During that time, I'd also like to deactivate the sensor's supply.

I'll have to check if I can source its power from a GIO pin.

It seems to be possible. THe MAX32660 can source 1 mA - the absolute maximum current draw for the sensor.

 

 

After wake-up, I should send commands to the sensor, then sleep again until it reports that data is ready on it's DRDY pin.

 

 

Staged Approach

 

I want to get the whole device working without power optimisation, but will keep all functionality isolated so that I can flex.

Then I'll try to introduce a clock based sleep.

After that I'll try to add an additional sleep between asking data and data ready.

Then I'll step it up and control the power to the sensor via the MAC32660.

Depending on how easy or difficult this is, it may be one or many blog posts.

Your help is welcome.

 

part 1: IDE install and Build First Example
part 2: Mod the PCB for Power Measurement
part 3: Power Measurement
part 4a: Low Power Sensor design - Barometer Hardware
part 4b: Low Power Sensor design - Barometer i2c and Init
part 4c: Low Power Sensor design - Barometer, Not Yet Power Optimised
MAX32660 Evaluation Kit - part 5: FreeRTOS Example
side note A: C++ Eclipse Project
side note B: Create a Release Configuration
Anonymous

Top Comments

  • DAB
    DAB over 3 years ago +1

    Good update Jan.

     

    DAB

  • Jan Cumps
    Jan Cumps over 3 years ago +1

    I2C is working. The first step to get the ROHM pressure sensor working.

  • Jan Cumps
    Jan Cumps over 3 years ago in reply to Jan Cumps +1

    First end-to-end communication works.
    I ask the ID of the sensor over i2c and the sensor replies:

     

    This capture is edited to move the second part of the conversation in the frame. In reality there is a longer…

  • Jan Cumps
    Jan Cumps over 3 years ago in reply to Jan Cumps

    I have the full init sequence running now for the pressure sensor.

     

     

    I2C Analysis results
    16 december 2018
    Bus configurationSDAChannel 1SCLChannel 0StatisticsDecoded bytes16Detected bus errors0IndexTimeHexBin0-5,00 μsSTART1500,00 ns0xba0b10111010291,50 μsACK396,00 μs0x100b000100004187,00 μsACK5202,00 μsSTART6207,00 μs0xbb0b1011101172,72 msACK82,72 ms0x320b0011001092,81 msNACK102,83 msSTOP118,32 msSTART128,32 ms0xba0b10111010138,41 msACK148,42 ms0x120b00010010158,51 msACK168,52 msSTOP1710,86 msSTART1810,87 ms0xba0b101110101910,96 msACK2010,96 ms0x010b000000012111,06 msACK2211,07 msSTOP2314,90 msSTART2414,90 ms0xba0b101110102514,99 msACK2615,00 ms0x130b000100112715,09 msACK2815,11 msSTOP2917,45 msSTART3017,45 ms0xba0b101110103117,54 msACK3217,55 ms0x010b000000013317,64 msACK3417,65 msSTOP3519,99 msSTART3620,00 ms0xba0b101110103720,09 msACK3820,09 ms0x140b000101003920,19 msACK4020,20 msSTOP4122,54 msSTART4222,55 ms0xba0b101110104322,64 msACK4422,64 ms0xca0b110010104522,73 msACK4622,75 msSTOP
    • Cancel
    • Up +1 Down
    • Reply
    • More
    • Cancel
  • Jan Cumps
    Jan Cumps over 3 years ago in reply to Jan Cumps

    First end-to-end communication works.
    I ask the ID of the sensor over i2c and the sensor replies:

     

    This capture is edited to move the second part of the conversation in the frame. In reality there is a longer tie where I drew the red vertical line.

     

    The code asks for the content of the ID register:

    #define BM1383AGLV_ID                           (0x10)

    The sensor replies with 0x32, the correct value:

    #define BM1383AGLV_ID_VAL                       (0x32)

     

    This is the first part of the ROHM Arduino example ported to the MAXIM MAX32660.

    note to self: to be fully correct, I have to send a restart instead of a stop after writing the register name.

    • Cancel
    • Up +1 Down
    • Reply
    • More
    • Cancel
  • Jan Cumps
    Jan Cumps over 3 years ago

    I2C is working. The first step to get the ROHM pressure sensor working.

    • Cancel
    • Up +1 Down
    • Reply
    • More
    • Cancel
  • DAB
    DAB over 3 years ago

    Good update Jan.

     

    DAB

    • Cancel
    • Up +1 Down
    • Reply
    • More
    • Cancel
Element14

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2022 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • Facebook
  • Twitter
  • linkedin
  • YouTube