|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
" x8 g' U$ w, `( \6 Qvoid PSCInit(void)
7 f# z& B" q2 P6 A; |4 ]9 ?{
+ Y; [8 G& a2 O' } PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);, O& H. N' N+ E( j a- }9 w( p6 ]; W
}6 J0 f! a8 `: h2 T( M6 }
) {9 K! i8 N* L1 F) fvoid GPIOBankPinMuxSet(void)
5 q5 h% `# k- a8 x, q{# e8 [* P8 C. `8 U9 ]+ U- R
// DRDY ------------ GPIO6[14] -- 111
. ^7 J" }! ? L- ?5 ` D // SPI1_CLK ------------ GPIO2[13] -- 46
7 z- V# g8 N& z // SPI1_SOMI------------ GPIO2[11] -- 441 m! E4 U" c+ d. q4 [
// SPI1_SIMO------------ GPIO2[10] -- 43
( N8 }) E& t6 r // SPI1_CS2 ------------ GPIO1[0] -- 175 G8 L& s* M, p1 @: X& o
// SPI1_CS3 ------------ GPIO1[1] -- 183 b/ o; \/ n# q( \
, j! {$ Y; n- q" T3 K* [# J0 @& w HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);( I) \9 c- A6 _- t5 O- \" R
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);' C1 T# H7 r: ~& F; H
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
) A3 M6 E; v2 @4 z3 t1 l
- G ]3 h2 Q# w- ?# d //DRDY' ?# F2 }9 o( o5 s& U4 L, F# ~
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
# J' L) x9 w# ^4 \; m, {9 X // CS2,CS3
: Y5 c0 e# s1 `$ ]) W GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
8 `1 l" M) G6 K GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3( H( a1 C! b1 u$ S/ G( v3 k
//SIMO5 A, [& s6 S7 u) p/ H
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO! y8 |+ n5 `/ q, ~0 _7 d
//SOMI
% k8 b) W8 j$ e4 Z5 J9 R0 P3 u GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
; W# X; L+ m2 N8 t4 P: m0 I //CLK- h% [3 [1 a4 x
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK) V8 p. Y1 b" E! e8 W* T P
7 H, M5 k( }! {
// LDAC( ]2 g6 `, @: \- y
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK! P8 H C5 _- H+ {
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
: }& V0 s P% G1 t8 D- Q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
# `( \) J) D6 @ X: |4 @7 K GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
8 j3 A2 y4 J3 s! `" v7 L8 K+ M GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
% s+ k& i! ~7 V}
+ \ I/ H# g8 L$ z
: V! ?& H6 u, G( O8 _! |# fint main(void)
3 T* h/ m* w$ T! @; }: Z{
1 C2 ?+ }, a/ n$ e' \3 q" X // 外设使能6 P: r3 v: a' d' k0 \
PSCInit();
( f5 {* ]" f' M5 ^, n2 B% r
4 j* W# |. T5 o: ]& E; o # w5 E* }* F8 D( f, Q' A$ f9 W
// 管脚复用配置
/ M! L! _& k A* N5 @# U! E, D8 Z- Q GPIOBankPinMuxSet();
! j0 j% H+ z% M& b5 F' Y$ a for(;;)
' {" z; l2 d1 `+ T+ I, b {& V0 a {
; X4 X, @, }/ w4 u2 v) k SET_SCLK();//时钟正常输出8 X$ F! k8 L" E) Z
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2! R: W% M+ ]) C# w( |5 I8 r3 q9 W
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3- k7 v$ ]: L& J! j5 t1 E: z( H5 d
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN+ o: I& K$ R; m* U; \& ~
2 ?# p5 L' V# p6 ^- o9 m
delay(20);/ e& g$ D5 A( W8 w# O- ?
CLR_SCLK();
& y" p( x0 D6 A: T. a5 K3 [4 h GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
7 t- _- _; Y$ g7 d GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
" j3 h9 S% q6 Z) Z. P8 g; F9 b+ r* \) f' D GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
. T6 x. v) k, ]: c delay(20);
7 h4 n& @9 \1 a( ?8 s }
/ L. m# l, e, f: n}+ | ]' ?' G: ]9 x0 L( q m5 ]
|
|