[Atmel] 跑一下SAM4N例程(十五):AT30TSE75x 温度传感器

[复制链接]
1420|4
 楼主| ddllxxrr 发表于 2015-3-25 19:28 | 显示全部楼层 |阅读模式
这个例程用 I01扩展板插到EXT1

本程分两个阶段,第一一些参数往AT30TSE75x里写,并读出看写得正确否。
第二阶段,温度每秒采样一次。

在Atmel Studio6.2 环境下插入板子,这时可快速打开例程:



往EEPROM中写数据及读出代码如下:

  1. uint32_t i;
  2.         /* Write pages in EEPROM */
  3.         for (i = 0; i < NB_PAGE; i++) {
  4.                 tx[NB_PAGE - 1] = i;
  5.                 if (at30tse_eeprom_write(tx, NB_BYTE, 0, i) != TWI_SUCCESS) {
  6.                         puts("Write EEPROM error\r");
  7.                         return 0;
  8.                 }
  9.                 delay_ms(5);
  10.         }
  11.         puts("Write EEPROM OK\r");

  12.         /* Read each page in EEPROM and compare them */
  13.         for (i = 0; i < NB_PAGE; i++) {
  14.                 memset(rx, 0, NB_BYTE);
  15.                 if (at30tse_eeprom_read(rx, NB_BYTE, 0, i) != TWI_SUCCESS) {
  16.                         puts("Read EEPROM error\r");
  17.                         return 0;
  18.                 } else {
  19.                         if (memcmp(tx, rx, NB_BYTE - 1) && (rx[NB_PAGE - 1] != i)) {
  20.                                 puts("Comparison error\r");
  21.                                 return 0;
  22.                         }
  23.                 }
  24.         }
  25.         puts("Read EEPROM & Compare OK\r");


其中TWI_SUCCESS在 twi.h中定义


#define TWI_SUCCESS              0
#define TWI_INVALID_ARGUMENT     1
#define TWI_ARBITRATION_LOST     2
#define TWI_NO_CHIP_FOUND        3
#define TWI_RECEIVE_OVERRUN      4
#define TWI_RECEIVE_NACK         5
#define TWI_SEND_OVERRUN         6
#define TWI_SEND_NACK            7
#define TWI_BUSY                 8
#define TWI_ERROR_TIMEOUT        9
/**

而读温度是如下代码:

  1. /* Read temperature every second */
  2.         while (1) {
  3.                 if (at30tse_read_temperature(&temp) != TWI_SUCCESS) {
  4.                         puts("Read temperature error\r");
  5.                         return 0;
  6.                 }
  7.                 printf("Read temperature:\t%d\r\n", (int)temp);
  8.                 delay_ms(1000);
  9.         }
运行截图如下:





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
okyouwin 发表于 2015-3-30 18:07 | 显示全部楼层
前排学习学习,。多谢版主。
missnihao 发表于 2015-3-31 17:31 | 显示全部楼层
不错呢,版主真是用心:victory:
yifengbest 发表于 2015-3-31 17:41 | 显示全部楼层
详细点更好了
julien 发表于 2015-3-31 18:47 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2404

主题

7001

帖子

68

粉丝
快速回复 在线客服 返回列表 返回顶部