|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
( N ~8 N* } ^# H1 Fvoid PSCInit(void)8 m! Y: _) c7 [$ V6 }' p8 a
{
7 v& q6 I7 a* f. \ PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
$ u3 _; v( d1 V& u}
& j) v% B j# v' B5 n6 Q" V# w* t; A8 P, X! D/ n7 J
void GPIOBankPinMuxSet(void); Y: u, P( b* M/ N" F
{/ r% X/ }. a8 T$ N* A
// DRDY ------------ GPIO6[14] -- 111
1 @& w* \% [" }5 H1 n" t // SPI1_CLK ------------ GPIO2[13] -- 46
# B: k) z# a6 x$ e7 ^1 f // SPI1_SOMI------------ GPIO2[11] -- 44
7 T; D+ U7 n3 H! j7 x8 U& t/ V // SPI1_SIMO------------ GPIO2[10] -- 43
5 ~( h7 o( G) j0 f4 m // SPI1_CS2 ------------ GPIO1[0] -- 17
* G, s, v+ n: r* f // SPI1_CS3 ------------ GPIO1[1] -- 18
" ]9 f8 ~- \$ O: @. N3 `$ n9 {& ]! n& ?) \
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
& b; V( d: j$ T HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);4 [# p; _( c' X
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);$ O, l1 T* l; d t( {+ A7 g; \
/ s) ^/ B) i7 p( p" P) R; @ //DRDY) l- k% p. a7 ?2 S1 r5 R p
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY& m% F9 S1 Y0 j% y
// CS2,CS3* l4 L# p# Z/ U6 ^
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
: G: _7 n6 q. ~! X, s- F- i GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3& v- h7 {! u' C6 g
//SIMO
7 `$ @# ~$ q/ O1 M GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO2 P# q% O; W% f/ |) ?
//SOMI
, U2 k4 }5 k4 ^& N GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI( |. ~7 A* u! c0 R
//CLK
4 Z8 r( {$ s) G GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
0 I: Y; D/ Q7 v4 C- H6 P) ~: y* l* \* F4 ~% d, i/ D
// LDAC/ e3 ^4 V5 w, Q1 w" d3 |7 u
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK' r) u" C0 R! _
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN# G: U6 o8 v5 V: Q# [
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
) b" n- ]& x6 \+ P/ O GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS35 s% o5 k9 j' F- U c' I, ]
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY i; z. N$ ]# r. |( W/ ^( a
}( U, ?7 E3 d; j0 J6 \
; v% f/ n6 q; |' t$ G, W3 ]
int main(void)1 U+ D: I' r1 m0 D! k
{# [ I+ j* [+ @
// 外设使能
% w7 W+ q+ D' U% s PSCInit();
; l& W2 q- h" W% l$ u& T5 d
) z/ n8 C9 i& a$ m1 D( f3 l; E % x4 S! W7 l2 I' m3 {7 _
// 管脚复用配置
# s* E3 Q+ {+ d1 M GPIOBankPinMuxSet();; s. s6 E8 d1 @$ T
for(;;), T7 b% U% p8 F6 E
{7 B/ r) `8 L- T- ~
SET_SCLK();//时钟正常输出
9 Z, P) J( `+ l" n4 u- n GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
; ~6 A0 y) B! A% ?9 @ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
! B) g: i+ E( x GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
3 g; x( P0 u$ r8 e
! C8 V+ E/ F: P q2 b' { delay(20);& a7 v0 y! o& k( A# ?- r5 i
CLR_SCLK();
2 e8 G( e" u& F5 U GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS36 G3 t# v9 ?" u0 @
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
( m4 E% X7 O. ]' d" i, Q1 t GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN7 v, b3 X7 x1 V+ h/ |4 t6 d; C
delay(20);
% ?" W2 v0 n+ D3 v }- r q, O; c9 f
}$ f4 R# C! g4 `8 U
|
|