久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7050|回復: 12
打印 上一主題 下一主題
收起左側

CS1238開源驅動代碼

  [復制鏈接]
跳轉到指定樓層
樓主
關于CS1238開源驅動代碼

我寫這款芯片驅動程序時也是參考一些網站,論壇,但是沒有我自己想要的,于是乎我自己根據芯片手冊自己擼調試完成,已在項目中使用。

文件C和H通用的,自行添加進入工程即可使用。

源程序如下:
  1. #include "CS1238.h"


  2. /******************************************************************************
  3. *函數名                :CS1238_Init
  4. *參數                        :無
  5. *返回                        :無
  6. *描述                        :初始化CS1238
  7. ********************************************************************************/
  8. void CS1238_Init(void)
  9. {
  10. #if 1
  11.         GPIO_InitTypeDef GPIO_InitStructure;
  12.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE );
  13.        
  14.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14;
  15.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;   //推挽輸出
  16.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  17.         GPIO_Init(GPIOD, &GPIO_InitStructure);
  18.         GPIO_ResetBits(GPIOD, GPIO_Pin_13|GPIO_Pin_14);                 //PD13,PD14 輸出高
  19. #endif
  20. }

  21. /******************************************************************************
  22. *函數名                :F_AD_Clock
  23. *參數                        :無
  24. *返回                        :無
  25. *描述                        :AD時鐘
  26. ********************************************************************************/
  27. static void F_AD_Clock(void)               
  28. {
  29.         SCLK = 1;                     //高電平不能超過100uS,否則進入powerdown的休眠模式.
  30.         delay_us(5);  
  31.         SCLK = 0;
  32.         delay_us(5);
  33. }

  34. /******************************************************************************
  35. *函數名                :CS1238_RD_DATA
  36. *參數                        :無
  37. *返回                        :AD值
  38. *描述                        :CS1238讀AD
  39. ********************************************************************************/
  40. long CS1238_RD_DATA(void)
  41. {       
  42.         unsigned int i;
  43.         long ad_data;

  44.         CS1238_DRDY_IN();
  45.         ad_data = 0;
  46.         SCLK = 0;
  47.         delay_us(10);
  48.         if(!SDAT_IN)
  49.         {
  50.                 for(i=1; i<=24; i++)               
  51.                 {
  52.                         ad_data <<= 1;                                                  
  53.                         F_AD_Clock();                                //1-24個SCLK
  54.                         if(SDAT_IN) ad_data++;                       
  55.                 }
  56.                 F_AD_Clock();                                        //第25個SCLK.
  57.                 F_AD_Clock();                                        //第26個SCLK.
  58.                 F_AD_Clock();                                        //第27個SCLK.                       
  59.         }
  60.                                           
  61.         while(SDAT_IN)
  62.                 delay_us(10);
  63.         return (ad_data^0x800000)/100;
  64. }

  65. /******************************************************************************
  66. *函數名                :CS1238_WR_CONFIG
  67. *參數                        :config 寄存器配置值
  68. *返回                        :無
  69. *描述                        :CS1238寫寄存器配置
  70. ********************************************************************************/
  71. void CS1238_WR_CONFIG(u8 config)
  72. {
  73.         #if 1
  74.         u8 i,CMD;
  75.         CS1238_DRDY_IN();                                //配置IO口為輸入
  76.         SCLK = 0;
  77.         delay_us(10);
  78.         if(!SDAT_IN)
  79.         {
  80.                 for(i=1; i<=29; i++)        //第1~29個SCLK.
  81.                 {
  82.                         F_AD_Clock();
  83.                 }
  84.                
  85.                 CS1238_DRDY_OUT();                //配置IO口為輸出
  86.                 CMD = 0X65;                                                //寫配置
  87.                 for(i=30; i<=36; i++)        //30~36寫0X65中低7位,寫配置寄存器命令
  88.                 {               
  89.                         if(CMD & 0x80)
  90.                                 SDAT_OUT = 1;
  91.                         else
  92.                                 SDAT_OUT = 0;
  93.                         delay_us(2);
  94.                         SCLK = 1;                  //高電平不能超過100uS,否則進入powerdown的休眠模式.
  95.                         delay_us(5);
  96.                         SCLK = 0;
  97.                         delay_us(5);
  98.                         CMD <<= 1;                                        //最高位移除,留底7位
  99.                 }
  100.                                        
  101.                 F_AD_Clock();                                        //第37個SCLK,CS1238自動切換DRDY/DOUT 的方向.
  102.                 for(i=38; i<=45; i++)        //第38~45個SCLK寫配置寄存器
  103.                 {
  104.                         if(config & 0x80)
  105.                                 SDAT_OUT = 1;
  106.                         else
  107.                                 SDAT_OUT = 0;       
  108.                         delay_us(2);
  109.                         SCLK = 1;                  //高電平不能超過100uS,否則進入powerdown的休眠模式.
  110.                         delay_us(5);                                 
  111.                         SCLK = 0;
  112.                         delay_us(5);
  113.                         config <<= 1;
  114.                 }
  115.                 CS1238_DRDY_IN();
  116.                 F_AD_Clock();                                        //第46個SCLK.
  117.                 delay_us(10);
  118.         }
  119.         #endif
  120. }
復制代碼

所有資料51hei附件下載:
cs238驅動代碼_C_H文件.zip (1.79 KB, 下載次數: 219)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:856722 發表于 2022-9-13 13:50 | 只看該作者
謝謝樓主,幫了大忙
回復

使用道具 舉報

板凳
ID:97678 發表于 2022-10-16 10:44 | 只看該作者
正在想使用這個開發一個4~20mA的采集項目。
回復

使用道具 舉報

地板
ID:402026 發表于 2022-10-16 11:21 | 只看該作者
寫得不錯,看完也有收獲。
回復

使用道具 舉報

5#
ID:684573 發表于 2022-11-1 08:48 | 只看該作者
感謝樓主分享。一個芯片公司連個官方例程都沒有,也是夠差的,那手冊也寫的了了。
回復

使用道具 舉報

6#
ID:427763 發表于 2022-12-13 11:57 來自手機 | 只看該作者
感謝,樓主我按你的代碼調試發現采集的數值一直不變,請問這是什么問題
回復

使用道具 舉報

7#
ID:725732 發表于 2022-12-25 15:13 | 只看該作者
LEI365 發表于 2022-11-1 08:48
感謝樓主分享。一個芯片公司連個官方例程都沒有,也是夠差的,那手冊也寫的了了。

我感覺它是和AD通用吧
回復

使用道具 舉報

8#
ID:136523 發表于 2023-1-13 11:49 | 只看該作者
高精度采集芯片,支持下國產
回復

使用道具 舉報

9#
ID:1061961 發表于 2023-2-1 22:27 | 只看該作者
不知道樓主采集穩定如何呢?
回復

使用道具 舉報

10#
ID:258676 發表于 2023-4-17 17:02 | 只看該作者
感謝樓主  后備用哦!!
回復

使用道具 舉報

11#
ID:321470 發表于 2024-4-18 11:40 | 只看該作者
CS1231是一樣的用法嗎
回復

使用道具 舉報

12#
ID:307779 發表于 2024-7-18 10:54 | 只看該作者
感謝大佬,我試試看
回復

使用道具 舉報

13#
ID:487396 發表于 2024-9-29 16:55 | 只看該作者
czjdxs 發表于 2024-4-18 11:40
CS1231是一樣的用法嗎

參考數據手冊,按它的時序來實現,一樣的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲大片在线观看 | 日韩中文字幕在线播放 | 国产精品久久二区 | 毛片com| 欧美精品一区二区三区在线 | 久久久久久久久久久久久九 | 日韩国产在线 | 欧美a级成人淫片免费看 | 91精品国产一区二区三区 | 成人激情视频免费在线观看 | 91久久精品国产91久久性色tv | 日韩在线一区二区三区 | 91精品国产日韩91久久久久久 | 国产福利在线 | 日韩欧美在线视频播放 | 五月天国产视频 | 欧洲免费视频 | 天天拍天天色 | 日本午夜视频 | 国产精品国产精品国产专区不卡 | 成人av久久| 成人av免费播放 | 一区二区三区精品在线视频 | 涩涩视频在线观看免费 | 国产精品不卡一区二区三区 | 日韩成人高清在线 | 日韩一区中文字幕 | 婷婷久久精品一区二区 | 在线色网 | 色伊人网 | 91久久综合 | 五月婷婷激情 | 中文字幕一区在线观看视频 | a久久| www.婷婷亚洲基地 | 日本高清视频在线播放 | 国产成人99久久亚洲综合精品 | 综合亚洲视频 | 午夜影院在线观看 | 国产成人午夜精品影院游乐网 | 在线一区视频 |