<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于STM32的PCL6045B開發(fā)體會(huì)

          基于STM32的PCL6045B開發(fā)體會(huì)

          作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò) 收藏

          于是我猜想是不是我寫入的數(shù)據(jù)不能改變高16位,只能改變低16位.
          所以我就做了以下測(cè)試工作:
          現(xiàn)在發(fā)現(xiàn)向DSP各軸緩沖區(qū)寫入數(shù)據(jù)時(shí),總是不能寫進(jìn)去高16位,而低十六位能寫進(jìn)去。比如,我寫p645_wreg(AXS_AX,WRENV1,0x00000001); //控制脈沖類型。
          p645_wreg(AXS_AX,WRENV1,0x00000002);
          p645_wreg(AXS_AX,WRENV1,0x00000003);
          分別能看到輸出不同類型的脈沖。證明低位操作有效!
          但是當(dāng)我寫做定長(zhǎng)測(cè)試時(shí),代碼如下
          p645_wreg(AXS_AZ, WPRMD, 0x00000041); //定長(zhǎng)運(yùn)動(dòng)模式
          p645_wreg(AXS_AZ, WRMV, 65536L);//這里寫入65535以下的數(shù)均能準(zhǔn)確控制電機(jī)走的步數(shù),超過65535,則會(huì)出現(xiàn)電機(jī)持續(xù)運(yùn)動(dòng)而不受控制的異常狀況!
          p645_wreg(AXS_AZ, WRFL, 500L);
          p645_wreg(AXS_AZ, WRFH, 2000L);
          p645_wreg(AXS_AZ, WRUR, 200L);
          p645_wreg(AXS_AZ, WRDR, 400L);
          p645_wreg(AXS_AZ, WRMG, 5L);
          p645_wcom(AXS_AZ,STAUD);
          另外,超過65535時(shí)我讀取出COUNT1中數(shù)據(jù)也是沒有規(guī)律的。而不超過65535時(shí),則完全正常!
          1.當(dāng)寫入65535時(shí),電機(jī)運(yùn)轉(zhuǎn)過程讀出數(shù)據(jù)如下:
          Counter1 Counter2
          指令 編碼器(這里是默認(rèn)的1倍,跟我們的編碼器對(duì)應(yīng)上是對(duì)的)
          0000019662 0000000958
          0000039790 0000001937
          0000059918 0000002917
          0000065535 0000003191
          0000065535 0000003191
          0000065535 0000003191
          0000065535 0000003191
          2.當(dāng)寫入65536及以上時(shí),電機(jī)運(yùn)轉(zhuǎn)過程讀出數(shù)據(jù)如下:
          Counter1 Counter2
          指令編碼器(這里是默認(rèn)的1倍,跟我們的編碼器對(duì)應(yīng)上是對(duì)的)
          0000019662 0000000958
          0000039790 0000001937
          0000059917 0000002917
          0000014509 0000003898
          0000034637 0000004878
          0000054764 0000005857
          0000009356 0000006837
          0000029484 0000007818
          0000049611 0000008797
          0000004203 0000009776
          0000044458 0000011737
          0000064586 0000012718
          0000019177 0000013697
          0000039305 0000014676
          0000059433 0000015657
          0000034152 0000017617
          0000054279 0000018596
          0000008871 0000019577
          0000028999 0000020557
          0000049126 0000021536
          0000003718 0000022516
          0000023846 0000023497
          0000043973 0000024476
          0000018692 0000026436
          0000058948 0000028397
          0000013539 0000029375
          0000033667 0000030355
          0000053794 0000031335
          以上數(shù)據(jù)均不超過65535
          基于上述現(xiàn)象,我做了個(gè)程序來(lái)測(cè)試 讀寫,發(fā)現(xiàn),我寫入的數(shù)據(jù)到緩沖去時(shí)超過0x00ffffff時(shí),讀出來(lái)的數(shù)據(jù)是不對(duì)的,只有低24位能讀出來(lái),高8位讀出來(lái)的均是0.
          寫寄存器函數(shù)修改如下:
          void p645_wreg(unsigned int base_addr,unsigned int rwcom,unsigned intdata)
          {
          unionudata{
          unsigned int ldata;
          unsigned short idata[2];
          }udt;
          udt.ldata = data;
          outpw (base_addr 2, udt. idata[0]);
          outpw (base_addr 3, udt. idata[1]);
          //outpw (base_addr, rwcom);
          }
          測(cè)試代碼如下:
          p645_wreg(AXS_AZ,WRENV2,0xffffffff);
          data3=inpw (AXS_AZ 2);
          data4=inpw (AXS_AZ 3);
          讀出的數(shù)據(jù)只能是data3=65535;data4=255,即最高8位丟失!
          當(dāng)p645_wreg(,,); 寫入的數(shù)據(jù)是低0x00ffffff以下的數(shù)據(jù)時(shí),data3;data4讀出來(lái)的數(shù)據(jù)是對(duì)的。即寫什么讀出什么。這就是對(duì)我現(xiàn)在遇到的問題的詳細(xì)敘述。

          本文引用地址:http://www.ex-cimer.com/article/201612/324398.htm

          后來(lái)經(jīng)過一番折騰,經(jīng)過大量的測(cè)量觀察發(fā)現(xiàn)。是高16位中的高低字節(jié)順序被對(duì)調(diào)了。郁悶了。于是我與日本方便的工程師交流,他們讓將STM32的A1~A4與PCL6045的A1~A4相連,(原來(lái)是STM32的A0~A3與PCL6045的A1~A4)
          于是地址也更改為
          #define AXS_AX 0x90000000
          #define AXS_AY 0x90000008
          #define AXS_AZ 0x90000010
          #define AXS_AU 0x90000018
          我感覺很奇怪。地址線的不同應(yīng)該只是地址的不一樣而已,怎么會(huì)導(dǎo)致高兩個(gè)字節(jié)的高低8位對(duì)調(diào)呢。日本方面說(shuō)是他們的芯片內(nèi)部設(shè)計(jì)是那樣的,而我在日脈手冊(cè)上沒有看到任何說(shuō)明。
          之后進(jìn)一步研究,我的PCL6045控制自如,全部功能順利驗(yàn)證了一遍。
          以上就是我開發(fā)PCL6045B過程中的開發(fā)體會(huì)。轉(zhuǎn)載請(qǐng)注明出處,有問題歡迎交流。


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: STM32PCL6045B開發(fā)體

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();