- bit 7 : ~ SHDN : shutdown 整個codec
- bit 6 : MCLKEN : DAC需要外部MCLK,但是 LineIn/Out 和Headphone部份則不需要
- bit 5.4 : CPEN : Charge Pump Enable : 讓LineOut , Headphone的Charge Pump功能enable起來
- bit 3 : HPEN : Enable Headphone output (有一句 "The Line Output must be enabled for the headphone amplifiers to operate properly",是說 enable headphone時,lineout也要enable才行嗎?)
- bit 2 : LNOEN : Enable LineOut (回應上一個問題:Yes)
- bit 1 : LNIEN : Enable LineIn
- bit 0 : DAC : Enable DAC.
所以如果有人設計 Lineout 直接以固定AMP gain 推speaker,則插入headphone時,speaker無法關閉。
這也就表示 MAX9850不支援Lineout直接接speaker (所以lineout沒有獨立gain control ?)。
所以LNOEN 一值要是1就是了
程式設計上,雖然用read-modify-write比較好(減少相依)。但是由於read-write之間形成一個critical section,然後I2C I/O部份又是一個critical section。
CE的critical section又有點像 mutex,不是完全的disable context switch,所以這樣作有機會會造成dead-lock (還有內建priority-inversion?)
所以有點危險。只好每一個function用一個variable來代表狀態,每次write時依照variable重新算出數值。
需要的variable有
- headphonein
- lineinopen
沒有留言:
張貼留言