[Atmel] 跑一下SAM4N例程(三):读芯片ID

[复制链接]
804|1
ddllxxrr 发表于 2015-2-25 21:34 | 显示全部楼层 |阅读模式
本帖最后由 ddllxxrr 于 2015-2-25 21:42 编辑

这个例程是读芯片ID,我发现Atmel的ID十分的详细,把型号都可以查到。
首先打开Atmel Studio开发环境,插入开发板。这时弹出对话框可直接打开例程了。



主要是把CHIPID的结构体打印出来:

结构如下:
  1. typedef struct chipid_data {

  2.         //! Version of the device
  3.         uint32_t ul_version;
  4.         //! Embedded processor
  5.         uint32_t ul_eproc;
  6.         //! Non-volatile program memory size
  7.         uint32_t ul_nvpsiz;
  8.         //! Second non-volatile program memory size
  9.         uint32_t ul_nvpsiz2;
  10.         //! Internal SRAM size
  11.         uint32_t ul_sramsiz;
  12.         //! Architecture identifier
  13.         uint32_t ul_arch;
  14.         //! Non-volatile program memory type
  15.         uint32_t ul_nvptyp;
  16.         //! Extension flag
  17.         uint32_t ul_extflag;
  18.         //! Chip ID extension
  19.         uint32_t ul_extid;
  20. } chipid_data_t;
而操作的读函数如下:

  1. uint32_t chipid_read(Chipid *p_chipid, chipid_data_t *p_chipid_data)
  2. {
  3.         if (NULL == p_chipid_data) {
  4.                 return 0xFFFFFFFF;
  5.         }
  6.        
  7.         p_chipid_data->ul_version =
  8.                 (p_chipid->CHIPID_CIDR & CHIPID_CIDR_VERSION_Msk) >>
  9.                         CHIPID_CIDR_VERSION_Pos;
  10.         p_chipid_data->ul_eproc =
  11.                 (p_chipid->CHIPID_CIDR & CHIPID_CIDR_EPROC_Msk) >>
  12.                         CHIPID_CIDR_EPROC_Pos;
  13.         p_chipid_data->ul_nvpsiz =
  14.                 (p_chipid->CHIPID_CIDR & CHIPID_CIDR_NVPSIZ_Msk) >>
  15.                         CHIPID_CIDR_NVPSIZ_Pos;
  16.         p_chipid_data->ul_nvpsiz2 =
  17.                 (p_chipid->CHIPID_CIDR & CHIPID_CIDR_NVPSIZ2_Pos) >>
  18.                         CHIPID_CIDR_NVPSIZ2_Pos;
  19.         p_chipid_data->ul_sramsiz =
  20.                 (p_chipid->CHIPID_CIDR & CHIPID_CIDR_SRAMSIZ_Msk) >>
  21.                         CHIPID_CIDR_SRAMSIZ_Pos;
  22.         p_chipid_data->ul_arch =
  23.                 (p_chipid->CHIPID_CIDR & CHIPID_CIDR_ARCH_Msk) >>
  24.                         CHIPID_CIDR_ARCH_Pos;
  25.         p_chipid_data->ul_nvptyp =
  26.                 (p_chipid->CHIPID_CIDR & CHIPID_CIDR_NVPTYP_Msk) >>
  27.                         CHIPID_CIDR_NVPTYP_Pos;
  28.         p_chipid_data->ul_extflag =
  29.                 (p_chipid->CHIPID_CIDR & CHIPID_CIDR_EXT) >> 31;
  30.                
  31.         if (p_chipid_data->ul_extflag) {
  32.                 p_chipid_data->ul_extid =
  33.                         p_chipid->CHIPID_EXID & CHIPID_EXID_EXID_Msk;
  34.         }
  35.         return 0;
  36. }
实际的运行结果如下:




本帖子中包含更多资源

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

×

评分

参与人数 1威望 +1 收起 理由
okyouwin + 1 很给力!

查看全部评分

okyouwin 发表于 2015-2-26 15:26 | 显示全部楼层
给力。多谢版主。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2404

主题

7004

帖子

68

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