欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10781|回復(fù): 22
收起左側(cè)

關(guān)于stc15w204s單片機與TM7707的驅(qū)動問題

[復(fù)制鏈接]
ID:260951 發(fā)表于 2021-5-4 14:22 | 顯示全部樓層 |閱讀模式
20黑幣
  1. //驅(qū)動程序
  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. */
復(fù)制代碼

TM7707

TM7707

stc15w204s

stc15w204s

最佳答案

查看完整內(nèi)容

數(shù)值穩(wěn)定,那是不是你分壓網(wǎng)絡(luò)或2.5v基準(zhǔn)的誤差沒計算調(diào)節(jié)好,采集計算時乘上一個誤差系數(shù)就可以了吧
回復(fù)

使用道具 舉報

ID:796531 發(fā)表于 2021-5-4 14:22 | 顯示全部樓層
fkup 發(fā)表于 2021-5-11 20:45
是的,我分頻后2.75MHZ,頻率整好了。但是采集總差點意思,數(shù)據(jù)總有些偏差,穩(wěn)定性還可以,同一個電壓前 ...

數(shù)值穩(wěn)定,那是不是你分壓網(wǎng)絡(luò)或2.5v基準(zhǔn)的誤差沒計算調(diào)節(jié)好,采集計算時乘上一個誤差系數(shù)就可以了吧
回復(fù)

使用道具 舉報

ID:390416 發(fā)表于 2021-5-4 18:23 | 顯示全部樓層
用他們官方的參考代碼 準(zhǔn)行
回復(fù)

使用道具 舉報

ID:466759 發(fā)表于 2021-5-4 20:35 | 顯示全部樓層
你這個應(yīng)該是改的AT89的程序,更換為stc15w204s需要注意端口模式的問題,試試在main中加入對端口的初始化,P0M0=0x00;P0M1=0x00;P1M0=0x00;P1M1=0x00;P2M0=0x00;P2M1=0x00;P3M0=0x00;P3M1=0x00;
我對比了一下你們的程序,沒發(fā)現(xiàn)什么問題,可以試試加入上面的,如果不行,可以檢查一下TM7707是不是好的,也可以檢查一下電路連接!
回復(fù)

使用道具 舉報

ID:230742 發(fā)表于 2021-5-4 20:59 | 顯示全部樓層
你想問什么?
回復(fù)

使用道具 舉報

ID:260951 發(fā)表于 2021-5-4 21:16 | 顯示全部樓層
cheny736 發(fā)表于 2021-5-4 20:35
你這個應(yīng)該是改的AT89的程序,更換為stc15w204s需要注意端口模式的問題,試試在main中加入對端口的初始化, ...

IO口應(yīng)該是沒問題的
回復(fù)

使用道具 舉報

ID:260951 發(fā)表于 2021-5-4 21:22 | 顯示全部樓層

閱讀芯片手冊,發(fā)現(xiàn)MCLKIN引腳需要時鐘信號, 我貼出來的驅(qū)動程序,應(yīng)該是那種有晶振電路的。而我的硬件設(shè)備沒有這個,只能靠軟件模擬時鐘信號。我想讀取標(biāo)志位無變化,是不是我芯片初始化就沒有成功;蚴俏夷M的時鐘信號有問題
回復(fù)

使用道具 舉報

ID:790408 發(fā)表于 2021-5-4 21:29 | 顯示全部樓層
你不因該說說那里有問題,你做了些什么處理等嘛,這不是讓別人給你寫代碼嘛,
回復(fù)

使用道具 舉報

ID:790408 發(fā)表于 2021-5-4 21:30 | 顯示全部樓層
卡在AD7707_DRDY說明這個值一直為1呀
回復(fù)

使用道具 舉報

ID:260951 發(fā)表于 2021-5-4 21:33 | 顯示全部樓層
人人學(xué)會單片機 發(fā)表于 2021-5-4 18:23
用他們官方的參考代碼 準(zhǔn)行

沒找到官方的
回復(fù)

使用道具 舉報

ID:260951 發(fā)表于 2021-5-4 21:45 | 顯示全部樓層
請問一下,MCLK IN 這個引腳需要給怎樣一個時鐘啊,可以定時器模擬PWM作為時鐘信號嗎?
回復(fù)

使用道具 舉報

ID:230742 發(fā)表于 2021-5-7 00:40 | 顯示全部樓層
我?guī)湍惆俣攘艘幌拢琈CLK IN 和MCLK OUT 接的是一個晶振。
https://blog.csdn.net/qq_37387733/article/details/105136060
我建議還是接個晶振。畢竟單片機分頻輸出我也沒用過。感覺單片機一忙別的,輸出的頻率就不穩(wěn)了。比如開中斷關(guān)中斷。你要24位這么高的精度,然后不給他一個高精度的晶振。我看很難。
回復(fù)

使用道具 舉報

ID:260951 發(fā)表于 2021-5-7 22:24 來自觸屏版 | 顯示全部樓層
啤酒瓶子老大 發(fā)表于 2021-5-7 00:40
我?guī)湍惆俣攘艘幌,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循環(huán)里面將p54取反,頻率可以達到2.75mhz。但是這樣做,mcu就只做io翻轉(zhuǎn)了,讀取7707這個芯片的值也不好弄了。我的想法是在定時器中斷里面讀,這樣對mclkin這個引腳的頻率影響也不會很大。
     mclkin這個地方的頻率給上了,tm7707讀取標(biāo)志位也可以成功置位,但是苦惱的是讀出的結(jié)果是錯的,也還沒搞清楚是讀取錯了,還是計算最終結(jié)果錯了,基準(zhǔn)電壓是2.5v
回復(fù)

使用道具 舉報

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

使用道具 舉報

ID:260951 發(fā)表于 2021-5-8 17:21 | 顯示全部樓層
啤酒瓶子老大 發(fā)表于 2021-5-8 01:14
百度還說了一個問題。7707和7705的寄存器是不同的,你仔細看看7707的手冊,如果還是沒有頭緒,就看看7705的 ...

有試過用7705的驅(qū)動代碼,效果差不多,DRDY引腳會變?yōu)榈碗娖,但是最后?shù)據(jù)還是不對
回復(fù)

使用道具 舉報

ID:260951 發(fā)表于 2021-5-11 09:03 | 顯示全部樓層
p54可以輸出51內(nèi)部晶振頻率
回復(fù)

使用道具 舉報

ID:796531 發(fā)表于 2021-5-11 14:32 | 顯示全部樓層
本帖最后由 paladina 于 2021-5-11 14:35 編輯

P54可以輸出時鐘,但需要配置分頻 后提供給TM7707. 在TM7707初始化函數(shù)里加入 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);
       
        //自校準(zhǔn)
        TM_WriteByte(0x10);
        TM_WriteByte(0x44);
        while(TM_DRDY) { _nop_(); }
       
        /* 通道2 */
        //濾波器低八位
        TM_WriteByte(0x51);
        TM_WriteByte(0x00);
        //濾波器高八位
        TM_WriteByte(0x21);
        TM_WriteByte(0x16);
       
        //自校準(zhǔn)
        TM_WriteByte(0x11);
        TM_WriteByte(0x6C);
        while(TM_DRDY) { _nop_(); }
}

評分

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

查看全部評分

回復(fù)

使用道具 舉報

ID:260951 發(fā)表于 2021-5-11 20:45 | 顯示全部樓層
paladina 發(fā)表于 2021-5-11 14:32
P54可以輸出時鐘,但需要配置分頻 后提供給TM7707. 在TM7707初始化函數(shù)里加入 CLK_DIV = 0xC0;          // ...

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

使用道具 舉報

ID:260951 發(fā)表于 2021-5-12 14:50 | 顯示全部樓層
paladina 發(fā)表于 2021-5-12 09:42
數(shù)值穩(wěn)定,那是不是你分壓網(wǎng)絡(luò)或2.5v基準(zhǔn)的誤差沒計算調(diào)節(jié)好,采集計算時乘上一個誤差系數(shù)就可以了吧

已經(jīng)解決了,應(yīng)該是寄存器的配置
回復(fù)

使用道具 舉報

ID:18016 發(fā)表于 2021-6-22 07:08 | 顯示全部樓層
fkup 發(fā)表于 2021-5-12 14:50
已經(jīng)解決了,應(yīng)該是寄存器的配置

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

使用道具 舉報

ID:236035 發(fā)表于 2021-7-28 16:00 | 顯示全部樓層
sydaxia 發(fā)表于 2021-6-22 07:08
你好我也遇到了同樣的問題 能具體的說一下嘛

參考7705的寄存器配置
回復(fù)

使用道具 舉報

ID:388477 發(fā)表于 2023-9-9 14:12 | 顯示全部樓層
我現(xiàn)在是用tm7707,現(xiàn)在電壓兩路正常,但是計算公式不對啊,v=adc值/16777216,不是應(yīng)該是v=2.5*adc值/16777216才對嘛,有沒有遇到的朋友,感謝!
回復(fù)

使用道具 舉報

ID:388477 發(fā)表于 2023-9-9 15:54 | 顯示全部樓層
zhang1314hong 發(fā)表于 2023-9-9 14:12
我現(xiàn)在是用tm7707,現(xiàn)在電壓兩路正常,但是計算公式不對啊,v=adc值/16777216,不是應(yīng)該是v=2.5*adc值/1677 ...

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

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表