搜索
bottom↓
回复: 3
打印 上一主题 下一主题

[请教]UC3+DS3234通过spi先写控制寄存器再读出来,结果全....

[复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2015-11-25 12:36:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. void ds_write_cmd(U8 addr,U8 data)
  2. {
  3.         spi_selectChip(COMM_SPI0,DS3234_SPI_REG);
  4.         spi_put(&AVR32_SPI0,addr);
  5.         spi_put(&AVR32_SPI0,data);
  6.         spi_unselectChip(COMM_SPI0,DS3234_SPI_REG);
  7. }
  8. unsigned char ds_read_data(U8 addr)
  9. {
  10.         unsigned char tem;
  11.         spi_selectChip(COMM_SPI0,DS3234_SPI_REG);
  12.         spi_put(COMM_SPI0,addr);
  13.         tem=spi_get(COMM_SPI0);
  14.         spi_unselectChip(COMM_SPI0,DS3234_SPI_REG);
  15.         return tem;
  16. }
复制代码

初始化spi:boadrate 500000,8位,模式3
用过3234的指导下

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

2
发表于 2015-11-25 13:42:12 | 只看该作者
这芯片子在这里没有多少人用吧

出0入0汤圆

3
 楼主| 发表于 2015-11-25 15:02:37 | 只看该作者
ersha4877 发表于 2015-11-25 13:42
这芯片子在这里没有多少人用吧

再请教下UC3的spi接口,CLK信号是CS选中之后一直有,还是只有传SPI操作的时候才有

出0入0汤圆

4
 楼主| 发表于 2015-11-26 12:33:12 | 只看该作者
  1. void init_spi0_2_gpio()
  2. {
  3.         gpio_enable_gpio_pin(DS_S_CS);
  4.         gpio_enable_gpio_pin(DS_S_MOSI);
  5.         gpio_enable_gpio_pin(DS_S_MISO);
  6.         gpio_enable_gpio_pin(DS_S_SCLK);
  7.         gpio_set_gpio_pin(DS_S_CS);
  8. }
  9. //////////////////////////////////////////////////
  10. //空闲时钟低,下降沿写入数据,
  11. void ds_write_cmd(unsigned char addr,unsigned char data)
  12. {
  13.         unsigned char i;
  14.         gpio_clr_gpio_pin(DS_S_CS);
  15.         gpio_clr_gpio_pin(DS_S_SCLK);
  16.         delay_us(3);
  17.         for (i=0;i<8;i++)
  18.         {
  19.                 gpio_set_gpio_pin(DS_S_SCLK);
  20.                 delay_us(1);
  21.                 if (GET_BIT(addr,(7-i)))
  22.                 {
  23.                         gpio_set_gpio_pin(DS_S_MOSI);
  24.                 }
  25.                 else
  26.                 {
  27.                         gpio_clr_gpio_pin(DS_S_MOSI);
  28.                 }
  29.                 delay_us(1);
  30.                 gpio_clr_gpio_pin(DS_S_SCLK);
  31.                 delay_us(3);
  32.         }
  33.         delay_us(1);
  34.         for (i=0;i<8;i++)
  35.         {
  36.                 gpio_set_gpio_pin(DS_S_SCLK);
  37.                 delay_us(1);
  38.                 if (GET_BIT(data,(7-i)))
  39.                 {
  40.                         gpio_set_gpio_pin(DS_S_MOSI);
  41.                 }
  42.                 else
  43.                 {
  44.                         gpio_clr_gpio_pin(DS_S_MOSI);
  45.                 }
  46.                 delay_us(1);
  47.                 gpio_clr_gpio_pin(DS_S_SCLK);
  48.                 delay_us(3);
  49.         }
  50.         delay_us(1);
  51.         gpio_set_gpio_pin(DS_S_CS);
  52. }
  53. /////////////////////////////////
  54. unsigned char ds_read_data(unsigned char addr)
  55. {
  56.         unsigned char i,cm_data=0;
  57.         gpio_clr_gpio_pin(DS_S_CS);
  58.         gpio_clr_gpio_pin(DS_S_SCLK);
  59.         delay_us(3);
  60.         for (i=0;i<8;i++)
  61.         {
  62.                 gpio_set_gpio_pin(DS_S_SCLK);
  63.                 delay_us(1);
  64.                 if (GET_BIT(addr,(7-i)))
  65.                 {
  66.                         gpio_set_gpio_pin(DS_S_MOSI);
  67.                 }
  68.                 else
  69.                 {
  70.                         gpio_clr_gpio_pin(DS_S_MOSI);
  71.                 }
  72.                 delay_us(1);
  73.                 gpio_clr_gpio_pin(DS_S_SCLK);
  74.                 delay_us(3);
  75.         }
  76.         delay_us(1);
  77.         for (i=0;i<8;i++)
  78.         {
  79.                 gpio_set_gpio_pin(DS_S_SCLK);
  80.                 delay_us(1);
  81.                 if (1==gpio_get_pin_value(DS_S_MISO))
  82.                 {
  83.                         SET_BIT(cm_data,(7-i));
  84.                 }
  85.                 else
  86.                 {
  87.                         delay_us(1);
  88.                 }
  89.                 delay_us(1);
  90.                 gpio_clr_gpio_pin(DS_S_SCLK);
  91.                 delay_us(3);
  92.         }
  93.         gpio_set_gpio_pin(DS_S_CS);
  94.         return cm_data;
  95. }
  96. #define SET_BIT(val, bitn) (val |=(1<<(bitn)))
  97. #define CLR_BIT(val, bitn) (val&=~(1<<(bitn)))
  98. #define GET_BIT(val, bitn) (val &(1<<(bitn)) )
复制代码

最后用GPIO做的 需要的可以参考一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-17 23:00

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表