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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于stc15w204s單片機與TM7707的驅動問題

[復制鏈接]
跳轉到指定樓層
樓主
20黑幣
  1. //驅動程序
  2. sbit AD7707_DRDY = P1^0;
  3. sbit AD7707_DIN  = P3^6;
  4. sbit AD7707_DOUT = P3^7;
  5. sbit AD7707_SCLK = P1^1;

  6. void write_byte1(uchar date);
  7. uchar read_byte1();
  8. void init1();
  9. void init2();
  10. unsigned long read_ch1_result();
  11. unsigned long read_ch2_result();

  12. void write_byte1(uchar date)
  13. {
  14.                 uchar i;
  15.                 for(i=0;i<8;i++)
  16.                 {
  17.                                 AD7707_SCLK=0;
  18.                                 _nop_();
  19.                                 if(date&0x80)
  20.                                         AD7707_DIN=1;
  21.                                 else
  22.                                         AD7707_DIN=0;
  23.                                 AD7707_SCLK=1;
  24.                                 date<<=1;
  25.                 }
  26. }

  27. uchar read_byte1( )
  28. {
  29.                 uchar j,b1;
  30.                 for(j=0;j<8;j++)
  31.                 {
  32.                                 AD7707_SCLK=0;
  33.                                 b1=(b1<<1)|AD7707_DOUT;
  34.                                 AD7707_SCLK=1;
  35.                 }
  36.                 return b1;
  37. }

  38. void init1()
  39. {
  40.                 AD7707_SCLK=1;
  41.                 AD7707_DIN=1;
  42.                 AD7707_DRDY=1;
  43.                 write_byte1(0X10);
  44.                 write_byte1(0X40);
  45.                 write_byte1(0X50);
  46.                 write_byte1(0X00);
  47.                 write_byte1(0X20);
  48.                 write_byte1(0X0f);
  49. }



  50. void init2()
  51. {
  52.                 AD7707_SCLK=1;
  53.                 AD7707_DIN=1;
  54.                 AD7707_DRDY=1;
  55.                 write_byte1(0X11);
  56.                 write_byte1(0X40);
  57.                 write_byte1(0X50);
  58.                 write_byte1(0X00);
  59.                 write_byte1(0X20);
  60.                 write_byte1(0X0f);
  61. }

  62. unsigned long read_ch1_result()
  63. {
  64.                 unsigned long TM_result;
  65.                 uchar i,a[3]={1,2,3};
  66.                 AD7707_DRDY=1;

  67.                 while(AD7707_DRDY);
  68.                 write_byte1(0x38);

  69.                 for(i=0;i<3;i++)
  70.                 {
  71.                                 a[i]=read_byte1();
  72.                 }
  73.                 AD7707_DRDY=1;
  74.                 TM_result=a[2]+(a[1]*256)+(a[0]*65536);
  75.                 return TM_result;
  76. }
  77. /*
  78. 問題:在讀取的時候,程序卡在了while(AD7707_DRDY);這句,請教如何解決
  79. */
復制代碼

51hei截圖_20210504141748.png (29.26 KB, 下載次數: 156)

TM7707

TM7707

51hei截圖_20210504141725.png (39.6 KB, 下載次數: 161)

stc15w204s

stc15w204s

最佳答案

查看完整內容

數值穩定,那是不是你分壓網絡或2.5v基準的誤差沒計算調節好,采集計算時乘上一個誤差系數就可以了吧
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:796531 發表于 2021-5-4 14:22 | 只看該作者
fkup 發表于 2021-5-11 20:45
是的,我分頻后2.75MHZ,頻率整好了。但是采集總差點意思,數據總有些偏差,穩定性還可以,同一個電壓前 ...

數值穩定,那是不是你分壓網絡或2.5v基準的誤差沒計算調節好,采集計算時乘上一個誤差系數就可以了吧
回復

使用道具 舉報

板凳
ID:390416 發表于 2021-5-4 18:23 | 只看該作者
用他們官方的參考代碼 準行
回復

使用道具 舉報

地板
ID:466759 發表于 2021-5-4 20:35 | 只看該作者
你這個應該是改的AT89的程序,更換為stc15w204s需要注意端口模式的問題,試試在main中加入對端口的初始化,P0M0=0x00;P0M1=0x00;P1M0=0x00;P1M1=0x00;P2M0=0x00;P2M1=0x00;P3M0=0x00;P3M1=0x00;
我對比了一下你們的程序,沒發現什么問題,可以試試加入上面的,如果不行,可以檢查一下TM7707是不是好的,也可以檢查一下電路連接!
回復

使用道具 舉報

5#
ID:230742 發表于 2021-5-4 20:59 | 只看該作者
你想問什么?
回復

使用道具 舉報

6#
ID:260951 發表于 2021-5-4 21:16 | 只看該作者
cheny736 發表于 2021-5-4 20:35
你這個應該是改的AT89的程序,更換為stc15w204s需要注意端口模式的問題,試試在main中加入對端口的初始化, ...

IO口應該是沒問題的
回復

使用道具 舉報

7#
ID:260951 發表于 2021-5-4 21:22 | 只看該作者

閱讀芯片手冊,發現MCLKIN引腳需要時鐘信號, 我貼出來的驅動程序,應該是那種有晶振電路的。而我的硬件設備沒有這個,只能靠軟件模擬時鐘信號。我想讀取標志位無變化,是不是我芯片初始化就沒有成功。或是我模擬的時鐘信號有問題
回復

使用道具 舉報

8#
ID:790408 發表于 2021-5-4 21:29 | 只看該作者
你不因該說說那里有問題,你做了些什么處理等嘛,這不是讓別人給你寫代碼嘛,
回復

使用道具 舉報

9#
ID:790408 發表于 2021-5-4 21:30 | 只看該作者
卡在AD7707_DRDY說明這個值一直為1呀
回復

使用道具 舉報

10#
ID:260951 發表于 2021-5-4 21:33 | 只看該作者
人人學會單片機 發表于 2021-5-4 18:23
用他們官方的參考代碼 準行

沒找到官方的
回復

使用道具 舉報

11#
ID:260951 發表于 2021-5-4 21:45 | 只看該作者
請問一下,MCLK IN 這個引腳需要給怎樣一個時鐘啊,可以定時器模擬PWM作為時鐘信號嗎?
回復

使用道具 舉報

12#
ID:230742 發表于 2021-5-7 00:40 | 只看該作者
我幫你百度了一下,MCLK IN 和MCLK OUT 接的是一個晶振。
https://blog.csdn.net/qq_37387733/article/details/105136060
我建議還是接個晶振。畢竟單片機分頻輸出我也沒用過。感覺單片機一忙別的,輸出的頻率就不穩了。比如開中斷關中斷。你要24位這么高的精度,然后不給他一個高精度的晶振。我看很難。
回復

使用道具 舉報

13#
ID:260951 發表于 2021-5-7 22:24 來自手機 | 只看該作者
啤酒瓶子老大 發表于 2021-5-7 00:40
我幫你百度了一下,MCLK IN 和MCLK OUT 接的是一個晶振。
https://blog.csdn.net/qq_37387733/article/det ...

mclkin這個引腳常見的的確是接晶振,我這個受硬件限制,只能用io模擬了,但是我看7707這個需要一個2.4mhz的信號,用定時器貌似行不通。目前想到兩個方案,一個是用pwm,用pwm的話就有個問題點是,stc15w204s這個芯片的pwm輸出引腳是否可以隨意指定,我這個是p5-4,手冊上的pwm輸出引腳都完美的避開了這個引腳,再有一個就是不知道pwm輸出能否達到2.4mhz以上。第二個方案是,直接將單片機主頻拉到了30mhz,然后while循環里面將p54取反,頻率可以達到2.75mhz。但是這樣做,mcu就只做io翻轉了,讀取7707這個芯片的值也不好弄了。我的想法是在定時器中斷里面讀,這樣對mclkin這個引腳的頻率影響也不會很大。
     mclkin這個地方的頻率給上了,tm7707讀取標志位也可以成功置位,但是苦惱的是讀出的結果是錯的,也還沒搞清楚是讀取錯了,還是計算最終結果錯了,基準電壓是2.5v
回復

使用道具 舉報

14#
ID:230742 發表于 2021-5-8 01:14 | 只看該作者
百度還說了一個問題。7707和7705的寄存器是不同的,你仔細看看7707的手冊,如果還是沒有頭緒,就看看7705的手冊。用7705的寄存器地址定義試一下。意思是市場上有些7707是7705仿制的。
回復

使用道具 舉報

15#
ID:260951 發表于 2021-5-8 17:21 | 只看該作者
啤酒瓶子老大 發表于 2021-5-8 01:14
百度還說了一個問題。7707和7705的寄存器是不同的,你仔細看看7707的手冊,如果還是沒有頭緒,就看看7705的 ...

有試過用7705的驅動代碼,效果差不多,DRDY引腳會變為低電平,但是最后數據還是不對
回復

使用道具 舉報

16#
ID:260951 發表于 2021-5-11 09:03 | 只看該作者
p54可以輸出51內部晶振頻率
回復

使用道具 舉報

17#
ID:796531 發表于 2021-5-11 14:32 | 只看該作者
本帖最后由 paladina 于 2021-5-11 14:35 編輯

P54可以輸出時鐘,但需要配置分頻 后提供給TM7707. 在TM7707初始化函數里加入 CLK_DIV = 0xC0;          //P54=SYSCLK/4 。我做過好幾塊STC15+TM7707的板子了,沒問題的,void TM770x_Config(void)
{
        CLK_DIV = 0xC0;        //P54=SYSCLK/4
       
        TM_RESET = 0;
        delay_ms(10);
        TM_RESET = 1;
       
        TM_DOUT = 1;
        TM_DIN = 1;
        TM_SCLK = 1;
        TM_CS = 1;
        TM_DRDY = 1;
        delay_ms(5);
       
        TM_WriteByte(0x40);
        TM_WriteByte(0x01);
        delay_ms(10);
       
       
        /* 通道1 */
        //濾波器低八位
        TM_WriteByte(0x50);
        TM_WriteByte(0x00);
        //濾波器高八位
        TM_WriteByte(0x20);
        TM_WriteByte(0x16);
       
        //自校準
        TM_WriteByte(0x10);
        TM_WriteByte(0x44);
        while(TM_DRDY) { _nop_(); }
       
        /* 通道2 */
        //濾波器低八位
        TM_WriteByte(0x51);
        TM_WriteByte(0x00);
        //濾波器高八位
        TM_WriteByte(0x21);
        TM_WriteByte(0x16);
       
        //自校準
        TM_WriteByte(0x11);
        TM_WriteByte(0x6C);
        while(TM_DRDY) { _nop_(); }
}

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

18#
ID:260951 發表于 2021-5-11 20:45 | 只看該作者
paladina 發表于 2021-5-11 14:32
P54可以輸出時鐘,但需要配置分頻 后提供給TM7707. 在TM7707初始化函數里加入 CLK_DIV = 0xC0;          // ...

是的,我分頻后2.75MHZ,頻率整好了。但是采集總差點意思,數據總有些偏差,穩定性還可以,同一個電壓前后測試,得到的數據一樣,就是和正確值差點。  我想問一下你的這個主頻是多少,分頻后是多少,我用你的配置試了一下,采集的數據也是不對的。
回復

使用道具 舉報

19#
ID:260951 發表于 2021-5-12 14:50 | 只看該作者
paladina 發表于 2021-5-12 09:42
數值穩定,那是不是你分壓網絡或2.5v基準的誤差沒計算調節好,采集計算時乘上一個誤差系數就可以了吧

已經解決了,應該是寄存器的配置
回復

使用道具 舉報

20#
ID:18016 發表于 2021-6-22 07:08 | 只看該作者
fkup 發表于 2021-5-12 14:50
已經解決了,應該是寄存器的配置

你好我也遇到了同樣的問題 能具體的說一下嘛
回復

使用道具 舉報

21#
ID:236035 發表于 2021-7-28 16:00 | 只看該作者
sydaxia 發表于 2021-6-22 07:08
你好我也遇到了同樣的問題 能具體的說一下嘛

參考7705的寄存器配置
回復

使用道具 舉報

22#
ID:388477 發表于 2023-9-9 14:12 | 只看該作者
我現在是用tm7707,現在電壓兩路正常,但是計算公式不對啊,v=adc值/16777216,不是應該是v=2.5*adc值/16777216才對嘛,有沒有遇到的朋友,感謝!
回復

使用道具 舉報

23#
ID:388477 發表于 2023-9-9 15:54 | 只看該作者
zhang1314hong 發表于 2023-9-9 14:12
我現在是用tm7707,現在電壓兩路正常,但是計算公式不對啊,v=adc值/16777216,不是應該是v=2.5*adc值/1677 ...

找到問題了,是讀取三個字節的數據后,組合錯了,之前參看別人的例程沒注意
TM_result=a[2]+(a[1]*256)+(a[0]*65536);這個就可以
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线资源视频 | 国产精品视频久久久 | www.日韩 | 国产亚洲精品美女久久久久久久久久 | 亚洲一区二区在线播放 | 成人福利视频网站 | 国产亚洲精品久久情网 | 欧美亚洲另类丝袜综合网动图 | 日韩aⅴ视频| 精品三级在线观看 | 日一区二区 | 国产性网| 天天草天天操 | 91精品国产91久久久久久 | 免费大黄视频 | 亚洲乱码国产乱码精品精的特点 | 成人一级黄色毛片 | 午夜免费成人 | 黄色毛片免费看 | 中文字幕亚洲视频 | 91国内外精品自在线播放 | 国产久 | 亚洲欧洲成人在线 | 国产精品美女久久久久aⅴ国产馆 | 中文字幕蜜臀av | 日韩精品一区二区三区在线播放 | 国产精品久久久久久久久久久久久久 | 日本一区二区三区在线观看 | 婷婷色综合 | 精品一区二区电影 | 黄视频在线网站 | 免费污视频 | 少妇精品久久久久久久久久 | 亚洲成人观看 | 日韩成人av在线 | 日韩www | 精品国产青草久久久久福利 | 狠狠干综合视频 | 男女羞羞免费视频 | 国产精品www| 国产精品99久久久久久久久 |