|
|
使用下面的例子代码,不能使SIMO和CS为低电平:0 w/ p; H, ?+ ^5 ~' c) h" W
void PSCInit(void)1 S( k- {0 Y; s# L5 k! p. y
{
/ S, a; p9 | F) n h/ `; R& s PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
7 B' |* ? @( G# c6 U7 A) O} K% q2 [; N, O0 S( a) [
2 P0 y4 }; W. n8 Z, r# }4 d! n% q& Yvoid GPIOBankPinMuxSet(void); L' K5 Z6 H9 Z2 q
{
) a5 T9 n/ B; {, X* O' K4 l3 q // DRDY ------------ GPIO6[14] -- 1118 v( I# W. s2 X5 z' B
// SPI1_CLK ------------ GPIO2[13] -- 46( B* `+ v- o% c0 b0 K5 a
// SPI1_SOMI------------ GPIO2[11] -- 44! `& J: z) ?$ _0 K5 L
// SPI1_SIMO------------ GPIO2[10] -- 43
* C( K0 J' ~+ o* f // SPI1_CS2 ------------ GPIO1[0] -- 17) P) u( j! G) ~8 q
// SPI1_CS3 ------------ GPIO1[1] -- 18
0 S( T- p, z4 k1 K
; i E: j2 |% l5 p6 v HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);2 W# j9 o; f" G/ R" g
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
( l1 P& w G& ] HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
8 e% F; U3 a; T8 ^6 e! l/ Y* O9 Z0 [3 C6 k( f7 ?, S6 a3 Z( P1 r
//DRDY
6 T0 f0 l9 u G: v" _& a. Z& y6 G GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY) r4 c' d/ L. o
// CS2,CS3: i: e4 F% l: `, W4 r1 i: A
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
3 K: t s- C5 l; u1 t' Y GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3! a( n+ q% y8 P
//SIMO
n# ~4 B! j! }$ \6 K0 P0 j2 l2 L GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO* h1 m" O& w+ C
//SOMI/ ~2 f' |, U; h6 i4 K
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
. _5 ?8 F4 {9 Z9 q0 b2 p' u //CLK
, R. X/ C" g0 [$ n GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK. H. }9 r, W1 v3 K* Q; f! i' r
3 {) X6 F! [9 e0 |$ D+ ?. G
// LDAC
7 g" {9 ^0 n% @! i GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK7 u) L" Z( G6 v8 b4 I
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN, Y* D( Y4 G+ Z" t' \' e
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
5 a: @8 H9 o" X- V. S% x GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3. F6 g% _6 r0 L- J, N4 Q( F, `
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
, T4 U8 F+ N! L4 t% w6 H}
1 R2 |. B( S3 S7 w2 H/ M4 s
3 Q# W" r [4 @int main(void)
# Z- b6 c( i K0 _$ S- Q2 D{
5 O5 Y% W# q9 E$ P1 h% l3 \( L' e: d // 外设使能
& Q+ ]" V9 Q5 j, {. g1 i$ ~) ? PSCInit();
" `' o0 |9 g( M4 ~ `! L, Z* U+ R$ @# K8 e
; |# V. q+ n! x7 T* f
// 管脚复用配置2 I3 P1 T2 V' L) ~& T9 ^& D9 ^5 R
GPIOBankPinMuxSet();$ x5 v' E2 z" i9 v2 j8 E5 {
for(;;)
5 N+ C" A+ Y- l t3 ` {/ ]& c5 G, M) N3 Y3 n- k
SET_SCLK();//时钟正常输出
% b, `! H! S$ B. t( [7 F6 h7 t GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2/ M' |8 p; V, r( Q5 I' l
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
" [& p z/ ]8 x) \& b GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN# W* w$ }$ n' J
4 \: |' I2 w& K5 {) I7 r8 |+ z
delay(20);
2 x5 y8 V& Z1 S$ a, p CLR_SCLK();
0 R* d5 ^+ f" V8 D' D6 x GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3' [2 W/ {7 G; B. g
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3# Z( ~; ^5 g! h; j
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN0 S- n$ {/ K! l# _0 g7 i
delay(20);6 `& F) N% L. k3 J
}
. `1 D2 x7 v Z}
8 w# E" Y0 [# ~& A; o |
|