View Issue Details

IDProjectCategoryView StatusLast Update
041SBPhard.回路public2023-07-13 08:37
Reporterna6ko Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionopen 
Summary041: 74VHC165 の clock 入力
Description

(74HCT597 は別途動作確認がいる)

当初 R206 = 0 ohm, R207 = open にして、 165.CLK = ~MCU.SPI.CLK; としたが、 MCU.SPI.CLK の立ち下がり後 10 から15 ns に data が変化するため、MCU.SPI.CLK の立ち上がり前 10 から 5 ns になり、 MCU.SPI.DI の setup time が確保できず正しく読めなかった.

10 から15 ns の delay は NOT gate 1 つ (74AHCT04) と 74165 CLK->QH の伝搬遅延の2つが原因と見られる. 74165 に関しては SN74LV165A, TC74VHC165 ともに伝搬遅延が typ で 11-12 ns 程度あるのでデータシート通りだと思われる.

次に R206 = open, R207 = 0 ohm にしたところ、 MCU.SPI.DI の setup time が確保されたのか MCU からの読み込みが正常になった. ただし hold time が 10 から 5 ns になっているので安定動作とはならない.

対処として 165.CLK に時定数約 10 ns の RC 遅延を設置. R207 = 220 ohm, C20x = 47 pF で動作し、MCU からの読み込み, setup time, hold time ともによくなった.

TagsNo tags attached.
Attach Tags

Activities

na6ko

2022-02-03 18:26

manager  

74165_clk_rcdelay.png (24,018 bytes)   
74165_clk_rcdelay.png (24,018 bytes)   

na6ko

2022-02-22 05:51

manager   ~0000084

正しいデータ
0xffe0:20 46 49 4E-41 4C 20 46=41 4E 54 41-53 59 20 32
0xfff0:14 58 00 00-48 04 01 0e=03 e2 00 01-2e fe bc fe

bit6 がおかしいデータ
busniki terminal: 2022-02-21T04:06:10+09:00
enter command: cr 0xffe0 0x20
0xFFE0:20 06 09 0E-01 0C 20 06-01 0E 14 01-13 19 00 12
0xFFF0:14 18 00 00-00 04 00 06-C1 E0 00 00-06 FE DC FE

SERCOM.DATA をDMAが取り込むタイミングを SERCOM1_DMAC_ID_RX にしたもの.
仕様上 1 byte おきに無駄なデータが入ることに注意.
busniki terminal: 2022-02-21T23:23:12+09:00
enter command: cr 0xffe0 0x20
0xFFE0:00 00 00 20-00 06 00 09-00 0E 00 01-00 0C 00 20
0xFFF0:00 06 00 01-00 0E 00 14-00 01 00 13-00 19 00 00

busniki terminal: 2022-02-21T23:23:12+09:00
enter command: cr 0xfff0 0x20
0xFFF0:00 00 00 14-00 18 00 00-00 00 00 08-00 04 00 01
0x0000:00 0E 7F C3-7F E2 00 00-00 01 00 2E-7F FE 7F DC

bit6 だけ MCU の sercom 側の hold time が間に合ってない?
正常 - 計測
BC - DC
A9 - E9
20 - 00
傾向として bit 7 の data が bit 6 に入り, bit 6 の data は消失していると見られる.
bit 7 の data が bit 6 に入るということは, data の更新が間に合っていないためなので 10.3 ns のフィルタが不要の可能性がある.
よくみると bit6 以外もたまに消失している.

74165 の CLOCK 入力の前の時定数 10.34 ns のフィルタを除いたら正常動作した. (作業簡略化のため R=220ohm, C=open)

na6ko

2022-02-22 06:01

manager   ~0000085

74165 の clock 入力への一連の対処は MCU の data 取り込みが立ち上がりであることと 74165 の data 更新も立ち上がりになっているから.

当初の対応では MCU の SPI clock を反転して入力していたが 7404 と 74165 の伝搬遅延を軽視していたため正しく動かなかった.
その次の対応では RC フィルタで約 10 ns の遅延をいれたものの MCU の動作は遅いという動作になっている. ロジックアナライザの波形ではこの対応はほぼ理想的な SPI の動きをしているのにこのような動作になるのは納得がいかない.

私のデータシートの解釈の間違いであればまだよいが今の所はどのタイミングで SPI DI を取り込んでいるかわからない. またロジックアナライザの時間計測精度は安物で満足をいくデータになっていないことにも留意を要する.

na6ko

2023-07-13 08:37

manager   ~0000110

ここの存在を忘れていたが完了している.

Issue History

Date Modified Username Field Change
2022-02-03 18:26 na6ko New Issue
2022-02-03 18:26 na6ko File Added: 74165_clk_rcdelay.png
2022-02-03 21:05 na6ko Description Updated View Revisions
2022-02-22 05:51 na6ko Note Added: 0000084
2022-02-22 06:01 na6ko Note Added: 0000085
2023-07-13 08:37 na6ko Note Added: 0000110
2023-07-13 08:37 na6ko Status new => closed