• slider image 71
  • slider image 72
  • slider image 73
:::


Browsing this Thread:   1 Anonymous Users






ATSAMD20J18 I2C slave問題
#1
新會員
新會員


查看用戶資訊
硬體環境: SAM D20 XPLAINED PRO(2014.7.15版本)
軟體環境: Atmel Studio 7
Device Pack: SAMD20_DFP 1.2.91

使用Atmel start 建了一個專案,使用I2C Slave driver in asynchronous mode
[img width=300]https://drive.google.com/file/d/1qOlGBREQF5K-1B7e8gvGN2m3fQngMRD6/view?usp=sharing[/img]

I2C master 使用Arduino UNO 發送(此發送已用另一塊Arduino slave確認OK)

遇到情況為,SAM D20 完全不回ACK
經過多天實驗,使用debug->IO觀察register發現status.CLKHOLD一直都是1,是INTFLAG.AMATCH為1造成的
[img width=300]https://drive.google.com/file/d/1IvQfQvL_2qz8DJol82vDilwe1LNmbL7Z/view?usp=sharing[/img]

datasheet上有提到CTRLB.CMD填值可以回應master,我寫入3後,確實是有ACK了,但必須一直自己polling寫3進去

想請問要使用原先asynchronous mode的中斷call back read data,該如何做

Attach file:



jpg  (0.00 KB)


jpg  (0.00 KB)


發表於: 2018/10/1 11:44
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: ATSAMD20J18 I2C slave問題
#2
新會員
新會員


查看用戶資訊
我發現到用start產生的程式碼有個地方錯誤,如果有microchip人員看到此篇,請幫忙回報

hpl_sercom.c
static void _sercom_i2c_s_irq_handler(struct _i2c_s_async_device *device)使用了hri_sercomi2cm_read_INTFLAG_reg(hw);這邊去讀master register。正確的因該要用hri_sercomi2cs_read_INTFLAG_reg(hw);

我修改過並增加部分程式,已經可以成功call back讀資料
修改過的程式碼(紅色框起部分)貼在下方圖片,供大家參考

Attach file:



jpg  (0.00 KB)


jpg  (0.00 KB)


發表於: 2018/10/1 16:03
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: ATSAMD20J18 I2C slave問題
#3
管理員
管理員


查看用戶資訊
十分感謝, 會通知後台系統維護人員, 目前測試過幾顆晶片型號(SAMD21/SAME54), 所有Generator出來的Code都有這個問題, 謝謝!

發表於: 2018/10/3 12:00
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]